我一直在努力成功下载图像而不将其传送到 fs。这是我已经完成的:
var Promise = require('bluebird'),
fs = Promise.promisifyAll(require('fs')),
requestAsync = Promise.promisify(require('request'));
function downloadImage(uri, filename){
return requestAsync(uri)
.spread(function (response, body) {
if (response.statusCode != 200) return Promise.resolve();
return fs.writeFileAsync(filename, body);
})
.then(function () { ... })
// ...
}
有效的输入可能是:
downloadImage('http://goo.gl/5FiLfb', 'c:\\thanks.jpg');
我确实认为问题出在处理body
. 我已经尝试将它转换为Buffer
(new Buffer(body, 'binary')
等)几种编码,但都失败了。
感谢您的帮助!