节点仅下载某些URL的部分图像

时间:2018-10-19 15:09:03

标签: node.js node-streams node-fetch

使用node-fetch下载某些图像时遇到麻烦。这仅在Windows(osx可以正常运行)以及特定的网址上发生。

起初,我认为它与节点获取本身有关,但是在精简代码以将示例发布到其问题页面时,我“解决了”问题:

这在OSX上有效,但仅在Windows上下载部分图像:

async function main2() {
  let url = 'https://www.chanel.com/images/q_auto,f_jpg,fl_lossy,dpr_2/w_1920/les-beiges-swatch-186587-8808323285022.jpg'

  response = await fetch(url);

  const file = fs.createWriteStream('test2.jpg');
  await new Promise((resolve, reject)=>{
    response.body.pipe(file);
    response.body.on('end', resolve);
    response.body.on('error', reject);
  })
  file.close();
}

这可在Windows和OSX上使用:

async function main() {
  let url = 'https://www.chanel.com/images/q_auto,f_jpg,fl_lossy,dpr_2/w_1920/les-beiges-swatch-186587-8808323285022.jpg'
  response = await fetch(url);

  const file = fs.createWriteStream('test.jpg');
  response.body.pipe(file);
  response.body.on('end', file.close);
}

我的问题是:

  • 为什么这两个代码片段会得到不同的结果
  • 为什么不同的网址会得到不同的结果

谢谢!

0 个答案:

没有答案