【问题标题】:Allowing users to download files as a batch from AWS s3 or Cloudfront允许用户从 AWS s3 或 Cloudfront 批量下载文件
【发布时间】:2011-11-19 14:24:17
【问题描述】:

我有一个网站,允许用户搜索音乐曲目并将他们选择的音乐下载为 mp3。

我的服务器上有网站,s3 上有所有的 mp3,然后通过云端分发。到目前为止一切顺利。

客户现在希望用户能够选择多个音乐曲目,然后将它们全部下载或批量下载,而不是一次下载 1 个。

通常我会将所有文件放在一个 zip 中,然后向用户提供一个指向该新 ​​zip 文件的链接以供下载。在这种情况下,由于文件位于 s3 上,这需要我首先将所有文件从 s3 复制到我的网络服务器,然后将它们处理成一个 zip,然后从我的服务器下载。

我是否可以在 s3 或 CF 上创建一个 zip,或者是否可以将文件批处理/分组到一个 zip 中?

也许我可以设置一个 EC2 实例来处理这个问题?

我将不胜感激。

最好的

【问题讨论】:

标签: amazon-s3 amazon-web-services amazon-cloudfront


【解决方案1】:

恐怕您无法在没有额外处理的情况下创建批次。启动 EC2 实例可能是为每个用户创建批处理的一种选择

【讨论】:

    【解决方案2】:

    我正面临完全同样的问题。到目前为止,我唯一能找到的是亚马逊的 s3sync 工具:

    https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

    就我而言,我使用的是 Rails + 它的 Paperclip 插件,这意味着我无法一次性轻松下载所有用户的图像,因为文件分散在很多子目录中。

    但是,如果您可以更好地对用户的文件进行分组,可以这样说:

    /users/<ID>/images/...
    /users/<ID>/songs/...
    

    ...等等,那么您可以立即解决您的问题:

    aws s3 sync s3://<your_bucket_name>/users/<user_id>/songs /cache/<user_id>
    

    请记住,您必须为您的服务器提供正确的凭据,以便 S3 CLI 工具可以在不提示输入用户名/密码的情况下工作。

    那应该给你排序。

    这里的其他讨论: Downloading an entire S3 bucket?

    【讨论】:

      【解决方案3】:

      s3 是基于单个 http 请求的。

      所以答案是线程来实现同样的事情

      Java api - 使用 TransferManager

      http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html

      您可以通过多线程获得出色的性能。

      抱歉,没有批量下载。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 2020-04-01
        • 2021-05-08
        • 1970-01-01
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 2018-12-15
        相关资源
        最近更新 更多