2017-06-21 51 views
1

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

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); 
      } 
     }); 
    }); 

    }, 

回答

0

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

只有一种方法可以说服S3为您提取文件并将其写入您的存储桶,也就是在S3中文件为已经。 S3可以通过从...本身获取来复制文件。但它会而不是代表您取回任何东西http...