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 位置。然后,您应该有一个服务或功能,可以在所有文件上传后将文件移动到实际位置。
我有一个 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 位置。然后,您应该有一个服务或功能,可以在所有文件上传后将文件移动到实际位置。