在node.js中将URL从URL保存到S3
问题描述:
我希望能够将图像从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);
}
});
});
},
答
不可能。你必须自己下载文件,然后上传它。
只有一种方法可以说服S3为您提取文件并将其写入您的存储桶,也就是在S3中文件为已经。 S3可以通过从...本身获取来复制文件。但它会而不是代表您取回任何东西http...
。