【问题标题】:Uploading multiple files to Amazon S3将多个文件上传到 Amazon S3
【发布时间】:2018-10-09 16:21:55
【问题描述】:

我需要有关如何在 Amazon S3 上上传多个文件的帮助。所以基本上我有三个用于文件上传的输入字段,两个输入将拍摄 10-20 张图片,最后一个输入只有一张图片,并在提交表单时将它们上传到 Amazon S3。

我用于上传图片的表单:

我有一个存储桶和所有东西,我需要某种解决方案来将多个图像上传到 Amazon S3。

我使用 PHP 作为我的后端,现在,当提交表单时,图像存储在主机上。但是我每个月都会上传超过 150gb 的图片,我需要 S3 来托管这些图片。

当我将表单与 Amazon S3 连接并尝试上传多个图像时,我收到此消息“POST 要求每个请求仅上传一个文件。”。

【问题讨论】:

    标签: php amazon-web-services amazon-s3 uploading


    【解决方案1】:

    S3 是高度可扩展的分布式存储。

    如果你的机器本地有这些图像,你可以简单地使用

    aws s3 同步 local_folder s3://bucket_name/

    https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

    cli 负责同步数据。

    您还可以使用配置设置在 cli 上配置所需的并行度。

    https://docs.aws.amazon.com/cli/latest/topic/s3-config.html

    如果这将是一个连续的数据移动,您也可以以编程方式执行此操作。

    EDIT1:

    一次只能从 UI 上传一个文件。

    您可以通过 javascript 对它们进行排序并一次上传一个。

    如果你想把它带到后端你可以这样做,

    https://w3lessons.info/2013/09/06/jquery-multiple-file-upload-to-amazon-s3-using-php/

    希望对你有帮助。

    【讨论】:

    • 感谢您的回答,但我需要的是这样的:当我的用户在我的 WebApp 上选择图像并单击提交 btn 时,所有图像都应上传到我的 amazon s3 存储桶。现在,他不能为每个 HTTP 请求处理一个以上的文件。我想以某种方式避免/绕过它。 (info) 我所有的代码都是纯 HTML 和 PHP。希望你明白我的想法,再次感谢!
    • 添加浏览器上传信息。
    【解决方案2】:

    这是 NodeJS 代码,它将让您了解如何上传所有文件,然后在上传完成后将响应发送回 UI。

    我正在使用 Promise 和 promise.all() 方法来解决所有的 Promise。

    我还在为 Node.JS 使用 multer,它处理我从 UI 收到的文件。

    app.post('/uploadMultipleFiles',upload.array('file', 10),function(req,res){
            var promises=[];
            for(var i=0;i<req.files.length;i++){
                var file = req.files[i];
                promises.push(uploadLoadToS3(file));
            }
            Promise.all(promises).then(function(data){
                res.send('Uploadedd');
            }).catch(function(err){
                res.send(err.stack);
            }) 
        })
    
        function uploadLoadToS3(ObjFile){
    
            var params={
                ACL :'public-read',
                Body : new Buffer(ObjFile.buffer),
                Bucket:'ascendon1',
                ContentType:ObjFile.mimetype,
                Key:ObjFile.originalname
            }
            return s3.upload(params).promise();
        }
    

    【讨论】:

    • 为什么要用 NodeJS 回答一个 php 问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2013-09-09
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多