OSX 上的 NodeJS 0.12.2。
我目前正在尝试使用 NodeJS 中的 http 从我的本地主机 http 服务器(也使用 Dropbox 测试)下载 .asar 文件(Electrons/Atom Shells 文件)。然而,无论我做什么组合,存档都会损坏,其他文件中的文件碎片不应该被损坏,就好像这些 block 被混淆了(如果这有任何意义......)
我还尝试从本地主机和保管箱下载一个普通的 .zip 文件,但遇到了同样的问题。
这是我最后一次尝试,只是卡住了。我已经尝试过使用和不使用 setEncoding 选项。我做错了什么?
var downloadFile = function(url, dest, cb) {
var file = fs.createWriteStream(dest);
// https when using dropbox direct links
http.get(url, function(res) {
res.setEncoding('binary');
res.pipe(file);
file.on('finish', function() {
file.close(cb);
});
});
};
最佳答案
问题出在您将编码显式设置为二进制,例如,这工作得很好:
fs = require("fs");
http = require("http");
var downloadFile = function (url, dest, cb) {
var file = fs.createWriteStream(dest);
http.get(url, function (res) {
//res.setEncoding('binary');
res.pipe(file);
file.on('finish', function () {
file.close(cb);
});
});
};
downloadFile("http://www.sevenstring.org/forum/images/misc/ss_header_l.png", "test.png", function (err) {
console.log(err);
});
关于javascript - http.get - 下载后文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154272/