Retrofit + AWS S3 - 预签名 URL 上传多张图片,我应该使用带有 PUT 请求的循环吗?

Retrofit + AWS S3 - Presigned URL uploading multiple images, should I use a loop with PUT requests?

我有一个 AWS Lambda 函数,用户对其进行了 GET request 并且它 returns 预签名 URL。然后,用户通过向 URL 发出 PUT 请求来上传图像。由于 AWS S3 PUT requests 将对象上传限制为每个 URL、

只能上传一个对象

如何发送多张图片?我是否应该对当前图像数量使用循环,例如:

假设用户要上传 5 张图片。

for(...5 images...){
   Make GET request to generate URL
   In the callback method, 
   Make a PUT request to the generated URL to upload image
} 

我不确定是否应该以这种方式使用该服务。这也会导致另一个问题,比如说如果我想要将所有图像上传并保存到我的数据库中,或者 none 被保存怎么办。因为在 PUT request's post 进程 Lambda 函数中,我想将 S3 图像 URL 保存到我的数据库中,我如何确保所有图像都已上传,而不仅仅是其中的 3/5如果网络出现故障?

你是对的。一个预签名的 url 是专门为上传单个文件而生成的。

如果您想在所有文件上传或 none 上传时实现这种原子行为,您需要自己实现这种逻辑。

例如,将所有文件上传到不同的 S3 位置。然后,您应该有一个服务或功能,可以在所有文件上传后将文件移动到实际位置。