从S3下载文件的最佳方法?

时间:2018-09-30 16:30:35

标签: c# asp.net-mvc amazon-s3

我有大约1GB的数据,我的客户端想以zip文件的形式从我的门户网站下载,但是在后端,这些文件是从AWS S3提供的。

当前,我正在将所有文件下载到内存流中并进行压缩,这会花费很多时间,有时会超时,并且客户端不确定请求是否正在处理,因为我在浏览器中没有下载进度。

那么有什么最好的解决方案来下载从S3压缩的海量数据

谢谢

2 个答案:

答案 0 :(得分:0)

您可以在Amazon EC2实例上运行一些代码,该实例从Amazon S3下载数据(如果在同一区域,则非常快),将其压缩,然后将压缩回S3。

然后用户可以直接从S3下载它。

如果您想花哨的话,他们可以通过预签名URL下载,并且您可以使用生命周期规则,将一两天后将其删除。

答案 1 :(得分:0)

好的,所以我本人对S3的经验很少,但是在一般情况下,像这样需要异步处理。与之类似,当用户单击“下载”时,您将启动一个后台进程,该进程将文件下载并压缩到某个临时位置。在此期间,您的客户会看到类似“正在准备下载,请稍候”的内容。理想情况下,带有进度条,以便他可以看到该过程不会停止。完成后,由于您已经在临时位置拥有完整的ZIP文件,因此下载将真正开始,并且没有任何超时。

或者,查看是否可以简化整个过程。现在,听起来好像您正在将所有文件下载到内存,在内存中创建ZIP文件,然后只有,您才开始将第一个字节输出到客户端。你可以做得更好。那里有允许“即时”压缩的库。尽管您仍然从一端从S3下载文件,但另一端已经将ZIP文件分发到客户端。这样,您也无需将所有内容都保留在内存中。