存储用户提交的图像

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 方法。

祝你好运