美文网首页
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件

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

作者: _扫地僧_ | 来源:发表于2021-10-19 09:53 被阅读0次

    我使用 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的原创文章,尽在:"汪子熙":


    相关文章

      网友评论

          本文标题:如何正确地把服务器端返回的文件二进制流写入到本地保存成文件

          本文链接:https://www.haomeiwen.com/subject/ptmgwltx.html