【问题标题】:Best way to download files from S3?从 S3 下载文件的最佳方式?
【发布时间】:2019-03-05 21:38:03
【问题描述】:

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

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    如果你想看中,他们可以通过预签名 URL 下载,你可以有一个生命周期规则,在一两天后删除它。

    【讨论】:

      【解决方案2】:

      好的,所以我自己对 S3 的经验很少,但在这种情况下,一般情况下需要异步处理。如 - 当您的用户单击“下载”时,您会启动一个后台进程,该进程将文件下载并压缩到某个临时位置。在此期间,您的客户端会看到类似“正在准备下载,请稍候”的信息。最好有一个进度条,这样他就可以看到进程没有停止。完成后,下载会真正开始,并且不会出现任何超时,因为您已经在临时位置拥有完整的 ZIP 文件。

      或者,看看您是否可以简化整个流程。现在听起来您正在将所有文件下载到内存中,在内存中创建 ZIP 文件,并且直到您才开始将第一个字节输出到客户端。你可以做得更好。那里有允许“即时”压缩的库。当您仍在一端从 S3 下载文件时,另一端已经将 ZIP 文件吐出到客户端。这样您也不需要将所有内容都保存在内存中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 2011-12-30
        • 1970-01-01
        • 2010-11-24
        • 2014-01-27
        • 2010-09-08
        • 2012-10-22
        相关资源
        最近更新 更多