2017-01-19 7 views
0

保存した画像ファイルが読めないノード要求:私は次のライブラリを使用しています

request 
.get("https://url/for/png/file") 
.on('error', function(err) { 
    console.log(err) 
}) 
.on('response', function(response){ 
    console.log(response.statusCode) // 200 
    console.log(response.headers['content-type']); // 'image/png' 
}) 
.on('complete', (resp: http.IncomingMessage, body: string | Buffer) => { 
    fs.writeFile(".../test.png", body, 'binary'); 

}); 

主な問題は、書き込まれたファイルが壊れている(開くことができない)ことです。

最後にon('complete'...)の代わりにpipeを使用すると、書き込まれたファイルは正しいです。

.pipe(fs.createWriteStream(".../test.png")) 

ファイルとの違いは何ですか?ファイルを書き込むには何が欠けていますか?

答えて

0

completeイベントが一つだけのparamを持って、IncomingMessage

request.get("https://www.google.pl/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png") 
.on('error', function (err) { 
    console.log(err) 
}) 
.on('response', function (response) { 
    console.log(response.statusCode); // 200 
    console.log(response.headers['content-type']); // 'image/png' 
    response.on('data', function (data) { 
     fs.writeFile("../test.png", data, {flag : "a+"}, function() {}); 
    }) 
}); 
+0

あなたは私はパイプを使用していない場合、それが仕事持っている画像のバイナリデータに応答ヘッダを追加する必要があることを意味しますか? – Aranir

+0

このコードは私のために働くので奇妙です。どのバージョンのノードとリクエストがありますか? –

関連する問題