Request: パイプを使用せずにダウンロードしたバイナリデータを保存する方法

作成日 2017年01月19日  ·  3コメント  ·  ソース: request/request

私のノードサーバーで、URLからpng画像をダウンロードして、ファイルに書き込んでみてください。

.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"))

違いは正確には何ですか?ファイルを書き込めるには何が欠けていますか?

最も参考になるコメント

エンコーディングを使用:nullオプション

全てのコメント3件

同じ問題。

エンコーディングを使用:nullオプション

@lambdacerroありがとうございます。それではこの問題を解決します。

このページは役に立ちましたか?
0 / 5 - 0 評価