Amazon s3 允许用户从AWS s3或Cloudfront批量下载文件

Amazon s3 允许用户从AWS s3或Cloudfront批量下载文件,amazon-s3,amazon-web-services,amazon-cloudfront,Amazon S3,Amazon Web Services,Amazon Cloudfront,我有一个网站,允许用户搜索音乐曲目并下载他们选择的mp3 我的服务器上有这个站点,所有的MP3都在s3上,然后通过cloudfront分发。到目前为止还不错 客户端现在希望用户能够选择一些音乐曲目,然后批量或批量下载,而不是一次下载一首 通常我会将所有文件放在一个zip文件中,然后向用户提供一个指向要下载的新zip文件的链接。在本例中,由于文件位于s3上,因此需要首先将所有文件从s3复制到Web服务器,然后将它们处理到zip中,然后从服务器下载 我是否可以在s3或CF上创建zip,或者是否有方法

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

我的服务器上有这个站点,所有的MP3都在s3上,然后通过cloudfront分发。到目前为止还不错

客户端现在希望用户能够选择一些音乐曲目,然后批量或批量下载,而不是一次下载一首

通常我会将所有文件放在一个zip文件中,然后向用户提供一个指向要下载的新zip文件的链接。在本例中,由于文件位于s3上,因此需要首先将所有文件从s3复制到Web服务器,然后将它们处理到zip中,然后从服务器下载

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

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

我将非常感谢您的指导

最好的


Joe

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

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

在我的例子中,我使用Rails+它的回形针插件,这意味着我无法轻松地一次下载用户的所有图像,因为文件分散在许多子目录中

但是,如果您能以更好的方式对用户的文件进行分组,请这样说:

/users/<ID>/images/...
/users/<ID>/songs/...
/users//images/。。。
/用户//歌曲/。。。
…等等,然后您可以通过以下方法立即解决您的问题:

aws s3 sync s3://<your_bucket_name>/users/<user_id>/songs /cache/<user_id>
aws s3同步s3:///用户//歌曲/缓存/
请记住,您必须为服务器提供正确的凭据,以便S3 CLI工具可以在不提示输入用户名/密码的情况下工作

这应该对你有好处

在此进行补充讨论:
s3是基于单个http请求的

所以答案是线程可以实现同样的功能

JavaAPI-使用TransferManager

使用多线程可以获得出色的性能


抱歉,没有批量下载

我面临着完全相同的情况,请告诉我您是如何处理这种情况的?谢谢…多线程就是答案