我試圖使用HTTP GET請求遠程下載MP4文件。當HTTP GET響應正在被寫入文件時,該文件正在寫入完美(〜3MB)。Node.js - createWriteStream寫入的文件不是writeFile
request.get('http://url.tld/video.mp4').pipe(fs.createWriteStream('video.mp4'))
然而,當HTTP GET響應身體正在由fs.writeFileSync
函數寫的,它創建了一個較大的文件(〜7MB),並且由於它損壞它不能被執行。
request.get('http://url.tld/video.mp4', function(err, res, body){
fs.writeFileSync('./video.mp4', body)
});
爲什麼會發生? pipe函數是否爲相應的文件設置了正確的編碼?
看起來問題是響應主體類型。它是一個字符串而不是緩衝區。 – Avi
是的。但我無法弄清楚,除非我以相反的方式進行調試。通過相互矛盾而不是讀出整個'request'庫來更容易證明:) – user3151330