使用fs.writeFile下载图像并将其上传到twitter

时间:2017-10-22 16:00:09

标签: node.js fs

我正在尝试下载图片,然后将图片上传到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,但这似乎不起作用。

1 个答案:

答案 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找到更多信息。