【发布时间】:2015-08-31 01:50:16
【问题描述】:
我正在构建一个节点应用程序,用户可以在其中提交图像以自定义他们的个人资料。我想知道存储这些图像的最佳方法是什么?像 Amazon S3 这样的东西是要走的路吗? CloudFront 怎么样,这可以接受用户提交的图像吗?对不起,如果这个问题有点宽泛,但我不确定从哪里开始。谢谢!
【问题讨论】:
标签: node.js file-upload amazon-s3 amazon-cloudfront
我正在构建一个节点应用程序,用户可以在其中提交图像以自定义他们的个人资料。我想知道存储这些图像的最佳方法是什么?像 Amazon S3 这样的东西是要走的路吗? CloudFront 怎么样,这可以接受用户提交的图像吗?对不起,如果这个问题有点宽泛,但我不确定从哪里开始。谢谢!
【问题讨论】:
标签: node.js file-upload amazon-s3 amazon-cloudfront
例如,我认为您可以将 knox 用于您的任务。
首先您需要使用 s3 api 创建“类”。使用 knox 执行此操作:
var s3 = function(args){
this.client = knox.createClient({
key: '<api-key-here>'
secret: '<secret-here>'
bucket: 'learnboost'
});
}
s3.prototype = {
getImage: function(userId, imageId){
var d = Q.defer();
var image = "";
client.get(path.join("images", userId, imageId)).on('response', function(res){
res.on('data', function(chunk){
image += chunk;
});
res.on('end', function(){
d.resolve(image);
});
}).end();
return d.promise;
},
saveImage: function(userId, imageId, imageBuffer){
var d = Q.defer();
this.client.putBuffer(imageBuffer, path.join("images", userId, imageId), function(err, res){
if(err){
d.reject(err);
}
return d.resolve();
});
return d.promise;
}
};
您可以在不使用 knox 的情况下从 s3 获取图像,但如果您在项目中需要它,您可以使用。要将图像保存到 s3,请在多部分路由中使用 saveImage 方法。
祝你好运
【讨论】: