我正在尝试下载图片,然后将图片上传到Twitter。当我尝试下载图像时,它将无法下载,直到应用程序完成,这意味着我无法将其上传到Twitter。
我相信node.js是异步的,因此导致了这个问题。任何建议都会很棒。
以下是我的下载功能。
// downloads the image
function download(url){
var request = require('request'),
fs = require('fs'),
url = url;
count = count + 1;
request(url, {encoding: 'binary'}, function(error, response, body) {
fs.writeFile('downloaded'+ count + '.jpg', body, 'binary', function (err) {
});
});
}
我尝试过使用writeFileSync,但这似乎不起作用。
答案 0 :(得分:1)
<强>更新强> 如果您希望一步下载并上传,请结帐this answer。
原始答案
查看this answer进行上传。
试试这个(下载):
var fs = require('fs'),
request = require('request');
request({uri: url})
.pipe(fs.createWriteStream(path))
.on('close', function() {
// done
});
取自here
如果您愿意,您实际上应该可以跳过您的驱动器并上传它,因为您也可以使用流下载它。
我建议您使用promises进行异步操作。他们使编写异步代码变得轻而易举,看起来比回调更清晰。使用带有async / await语法的promise(现在在Node 8中本身支持)时,它会更好。
这是promises and async/await的速成课程。我相信你可以通过Googling找到更多信息。