2015-05-10 192 views
2

OSX上的NodeJS 0.12.2。http.get - 下載後文件損壞

我正在嘗試使用http在NodeJS中從本地主機http服務器(也使用Dropbox測試)下載.asar文件(Electrons/Atom Shells存檔)。但是,無論我做什麼樣的組合,歸檔文件都會損壞,其他文件中的文件不應該是這樣,就好像塊混在一起(如果這樣做有道理......)

I'我也嘗試從localhost和dropbox下載一個簡單的.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); 
    }); 
    }); 
}; 

回答

1

的問題來自於你明確地設置編碼爲二進制,例如,這工作得很好:

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); 
}); 
+0

我既沒有審判,導致同樣的問題。這是我迷失方向的另一個原因。 – Dustin