【发布时间】:2020-07-29 12:39:37
【问题描述】:
在我的应用程序中,我正在将图像上传到 AWS S3,并且在将图像上传到 s3 后,图像的 s3 url 正在发布到我的数据库中。压缩图片并根据用户网络访问上传到s3需要很长时间。所以用户必须等到图片上传。
- 如何减少用户等待时间?
- 我可以在后台进行压缩和上传吗?或从我们的后端 NodeJS 发布图片。
- 什么是有效的方法?
【问题讨论】:
在我的应用程序中,我正在将图像上传到 AWS S3,并且在将图像上传到 s3 后,图像的 s3 url 正在发布到我的数据库中。压缩图片并根据用户网络访问上传到s3需要很长时间。所以用户必须等到图片上传。
【问题讨论】:
您可以使用来自 AWS S3 的 Signed URLs。这将为您返回一个链接,该链接可用于直接将您的文件上传到 S3,而无需通过您的服务器。为了处理您的文件,您可以使用 AWS Lamda Functions,这样您的服务器就不会因处理文件而产生任何开销。
以 NodeJS 为例
const url = await s3.getSignedUrlPromise('putObject', {
Bucket: 'YOUR_BUCKET',
ContentType: 'YOUR_CONTENT_TYPE',
ACL: 'public',
Key: 'path/to/yourfile'
})
上面的例子会返回一个可以发送给用户的 URL,所以用户可以直接从浏览器/安卓应用上传文件到 S3 存储桶。 您可以简单地对 Android 应用返回的 URL 执行 PUT 请求。
注意:根据需要更改ACL,示例文件中可公开访问
【讨论】: