用Node.js请求库保存图像文件会导致exception

这是从请求的 Github回购 – https://github.com/mikeal/request

您可以将任何响应stream式传输到文件stream。

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) 

我已经修改它像这样,其中largeImage是从第三方网站的绝对path。

 request(largeImage).pipe(fs.createWriteStream('./img/large/demo.jpg')); 

但是我得到以下错误(不知道为什么?)。 我已经看了createWriteStream API,它似乎是正确的。 如果我只包含“demo.jpg”,它工作正常。 但是如果我在“demo.jpg”旁边包含path,则会引发exception。

 stream.js:81 throw er; // Unhandled stream error in pipe. ^ Error: ENOENT, open './img/large/demo.jpg' 10 Oct 16:51:02 - [nodemon] app crashed - waiting for file changes before starting... 

更新:问题是我没有在/ img /之前包含./public/文件夹。

此更新的代码正常工作:

  request(largeImage).pipe(fs.createWriteStream('./public/img/large/demo.jpg')); 

这一切看起来不错。 我的猜测是这个问题与权限有关,或者可能需要先创build./img/large目录。

做这样的事情来获得更多的信息:

 var ws = fs.createWriteStream('./img/large/demo.jpg'); ws.on('error', function(err) { console.log(err); }); request(largeImage).pipe(ws);