节点请求:保存的图像文件不可读

时间:2017-01-19 16:42:08

标签: node.js request

我正在使用以下库:

https://github.com/request/request

在我的节点服务器上尝试从网址下载png图像并将其写入文件:

  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');

});

主要问题是编写了文件(无法打开)。

如果我在结尾使用pipe而不是on('complete'...),则书面文件是正确的。

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

究竟有什么区别以及我缺少什么才能写出文件?

1 个答案:

答案 0 :(得分:0)

complete事件只有一个参数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 () {});
    })
});