将图像从URL保存到node.js中的S3

时间:2017-06-21 23:30:55

标签: node.js express amazon-s3 sails.js

我希望能够将图像从URL保存到S3。我已经能够通过使用此代码(docs here)允许用户上传个人资料图片来做类似的事情:

uploadUserImage: function(req, res) {
    var userName = req.params.username;
    var fname = userName + ".jpg";
    var userAvatar = "https://.......;

    req.file('image').upload({
      adapter: require('skipper-s3'),
      key:'xxxxxxxxxxxx',
      secret:'xxxxxxxxxx',
      region: "xxxxxx",
      bucket: 'xxxxxxx',
      headers: {
        ACL: 'public-read'
      },
      saveAs: "user-images/"+fname
    }, function whenDone(err, uploadedFiles) {

无论如何,我可以修改此代码,以便保存来自URL /链接的图像吗?

我一直在努力做这样的事情,但我无法弄清楚它是如何起作用的。

var request = require('request');
function(person, next) {

      request({
          url:person.image,
          encoding:null
      }, function(err, res, reqBody) {
          if (err) {
              console.log(err);
          } else {
              console.log(reqBody);
              console.log(res);
          }
      reqBody.upload({
       adapter: require('skipper-s3'),
       key:'xxxxxxxxxxxx',
       secret:'xxxxxxxxxx',
       region: "xxxxxx",
       bucket: 'xxxxxxx',
       headers: {
        ACL: 'public-read'
      },
        saveAs: "user-images/"+person.id+".jpeg"
      }, function whenDone(err, uploadedFiles) {
            if(err) {
                return next(err);
            } else {
                person.image = "https:........";
                return next(null, person);
            }
        });
    });

  },

1 个答案:

答案 0 :(得分:2)

不可能。您必须自己下载文件,然后上传。

只有一种方法可以说服S3为您提取文件并将其写入您的存储桶,这就是S3中的文件已经的时候。 S3可以通过从...本身获取来复制文件。但是会代表您取代http...