使用多种方法下载文件并在本地应用程序中同步写入文件(当前使用名为download-file-sync
的模块),使用writeFileSync
编写的文件存在问题。
这是我的代码:
var downloadFileSync = require('download-file-sync');
fs.writeFileSync("twc.mp4", downloadFileSync(sourceURLEncoded));
现在,从技术上讲,这是在写 something ,并且在Notepad ++中打开文件至少显示出该文件的开头与通过Chrome下载的相同文件相同,但行数相同。但是,文件大小大约是原来的两倍:
Chrome下载不会播放Node下载,
如何在Node中成功完成同步文件下载?
答案 0 :(得分:0)
原因是download-file-sync调用curl并在需要“纯”字节时将结果编码为字符串。
如果该字符串不是有效的UTF-8,则可能会扩展某些字符,从而导致其大小和内容与原始二进制文件不同。
要解决此问题,您只需将模块替换为其使用的代码,然后在使用buffer
(默认值)进行编码的情况下创建一个新函数:
function downloadFileSync(url) {
return require('child_process')
.execFileSync('curl', ['--silent', '-L', url]); // remove options {encoding: 'utf8'}
}
并尝试使用它。