关键词搜索

源码搜索 ×
×

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

发布2021-09-10浏览1182次

详情内容

我使用 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
                });
            }); 
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    文件写入的代码:

    fs.writeFile(oVideo.fileName, oVideo.fileContent, "binary", function (error) {
            if(error)
                console.log("file writes error");
            else{
                console.log("File: ", oVideo.fileName, " writes ok");
            }
        });
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7

    之后问题消失。

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

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载