javascript - http.get - 下载后文件损坏

标签 javascript node.js

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/

相关文章:

php - 电子邮件重新输入警报jquery

python - 从当前进程创建 PM2 生态系统文件

node.js - 当浏览器发出请求时,express 中间件函数被调用两次

javascript - 将值的 react 对象添加到对象数组

javascript - Solidity 函数修改值失败

javascript - 每个方法中的 if-else (jQuery)

javascript - Node js for循环在下一次迭代之前等待异步函数?

node.js - 使用 sequelize js 限制 x 和 y

node.js - "Property ' 在 prisma 客户端中创建 ' does not exist"

javascript - Sequelize - 如何仅返回数据库结果的 JSON 对象?