【问题标题】:Storing user submitted images存储用户提交的图像
【发布时间】:2015-08-31 01:50:16
【问题描述】:

我正在构建一个节点应用程序,用户可以在其中提交图像以自定义他们的个人资料。我想知道存储这些图像的最佳方法是什么?像 Amazon S3 这样的东西是要走的路吗? CloudFront 怎么样,这可以接受用户提交的图像吗?对不起,如果这个问题有点宽泛,但我不确定从哪里开始。谢谢!

【问题讨论】:

    标签: node.js file-upload amazon-s3 amazon-cloudfront


    【解决方案1】:

    例如,我认为您可以将 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 方法。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2022-12-12
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多