存储用户提交的图像
Storing user submitted images
我正在构建一个节点应用程序,用户可以在其中提交图像以自定义他们的个人资料。我想知道存储这些图像的最佳方式是什么?像 Amazon S3 这样的方法是可行的吗? CloudFront 怎么样,它可以接受用户提交的图像吗?对不起,如果这个问题有点宽泛,但我不确定从哪里开始。谢谢!
例如,我认为您可以使用 knox 来完成您的任务。
首先,您需要使用 s3 api 创建 "class"。用诺克斯做这个:
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 方法。
祝你好运
我正在构建一个节点应用程序,用户可以在其中提交图像以自定义他们的个人资料。我想知道存储这些图像的最佳方式是什么?像 Amazon S3 这样的方法是可行的吗? CloudFront 怎么样,它可以接受用户提交的图像吗?对不起,如果这个问题有点宽泛,但我不确定从哪里开始。谢谢!
例如,我认为您可以使用 knox 来完成您的任务。
首先,您需要使用 s3 api 创建 "class"。用诺克斯做这个:
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 方法。
祝你好运