关于node.js:如何正确地把服务器端返回的文件二进制流写入到本地保存成文件

我应用 Node.js 的 request 工具库,申请服务器端的视频文件,保留到本地之后,发现了问题。

我把 url 输出到浏览器里,手动下载视频文件后,文件大小为 70 多 KB:

然而应用 Node.js 代码申请文件数据并保留到本地,发现文件尺寸变成 100 多 KB 了,显然不正确:

通过钻研发现,须要应用 request 在发动数据申请之前,增加如下一行语句:

request.defaults({ encoding: null });

残缺的数据申请的代码:

var requestC = request.defaults({ encoding: null });
        
        console.log("get video via url: " + url );
        const fileName = getVideoPartNameByUrl(url);

        requestC(getVideoOptions,function(error,response,body){
            if(error){
                console.log("error occurred: " + error);
                reject(error);
            }
            resolve({
                fileName: fileName,
                fileContent: body
            });
        }); 

文件写入的代码:

fs.writeFile(oVideo.fileName, oVideo.fileContent, "binary", function (error) {
        if(error)
            console.log("file writes error");
        else{
            console.log("File: ", oVideo.fileName, " writes ok");
        }
    });

之后问题隐没。

更多Jerry的原创文章,尽在:”汪子熙”:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理