如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
我使用 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的原创文章,尽在:"汪子熙":
文章图片
推荐阅读
- 死结。
- Y房东的后半生14
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- Eddy小文
- 人如果没梦想,和咸鱼有什么区别(自媒体时代把握住就能咸鱼翻身)
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)