上传多个文件到Amazon S3

15

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

我正在使用以下表单上传图像:

enter image description here

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

我使用PHP作为我的后端,目前在提交表单时,图像存储在托管上。但是每个月我将上传超过150GB的图像,因此我需要S3来托管这些图像。

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

2个回答

11

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

我使用了 Promises 和 promise.all() 方法,它将解决所有 Promises。

我还使用了 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();
    }

12
为什么要用NodeJS回答一个PHP问题? - D. Kendall

5

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

如果您在本地计算机上有这些图像,您可以简单地使用

aws s3 sync 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

如果需要持续进行数据移动,也可以通过编程方式执行此操作。

编辑1:

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

您可以通过JavaScript对它们进行排序并逐个上传。

如果您想将其带到后端,则可以这样做,

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

希望这可以帮助您。


谢谢您的回答,但我需要的是这样的东西:当我的用户在我的WebApp上选择图像并单击提交按钮时,所有图像都应上传到我的Amazon S3存储桶中。现在,他每个HTTP请求只能处理一个文件。我希望以某种方式避免/绕过这一点。(信息)我的所有代码都是纯HTML和PHP编写的。希望您明白我的意思,再次感谢! - Milos Petrovic
添加了有关浏览器上传的信息。 - Kannaiyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接