如何将保存到S3的文件推送到前端进行下载?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将保存到S3的文件推送到前端进行下载?相关的知识,希望对你有一定的参考价值。

在我的Web应用程序上,我有一个链接,用户可以单击该链接并下载包含一些信息的CSV文件。

[当用户单击下载链接时,应用程序从DynamoDB检索记录并将结果以异步方式保存为文件到S3,因为完成检索和保存可能需要15秒钟的时间。

这意味着当用户单击下载链接时,该文件将无法在S3上立即提供给用户。

在这种情况下,一旦文件成功保存到S3并准备好下载,我如何将其推送给前端的用户?

答案

对于长时间运行的作业,一种典型的策略是在数据库中跟踪某种作业ID,并在完成后更新数据库。例如,您可能有一个如下所示的API:

POST /jobs

 ... job parameters ... 

回应:


  "id": "c7758160-12c2-448a-b982-1f613e4a9593"
  "status": "processing"

然后,您可以轮询结果:

GET /jobs/c7758160-12c2-448a-b982-1f613e4a9593

如果作业statusdone或其他,则可以单击相应的S3 URL。 (也许您的API服务器返回签名的URL。)

代替轮询,您还可以使用服务器发送的事件进行更新。

作为另一种方法,对于运行时间较短的作业,您可以接受API请求,开始作业处理,只有完成后,才发出HTTP 302/307重定向到S3 URL。我通常不会超过几秒钟就不会这样做。

以上是关于如何将保存到S3的文件推送到前端进行下载?的主要内容,如果未能解决你的问题,请参考以下文章

将文件推送到 Amazon Cloudfront:可能吗?

如何使用 Google Cloud Messaging 将通知推送到 iOS

使用服务器推送推送文件后,如何将文件保存在浏览器缓存中?

将 s3 中跨 CSV 文件的数十亿条记录推送到 MongoDb

推送到firebase数据库时如何设置推送键?

从外部附件输入流中读取并推送到 s3 的最有效方法?