2011-09-18 169 views
3

我有一個網站,允許用戶搜索音樂曲目並將他們選擇的歌曲下載爲mp3。允許用戶從AWS s3或Cloudfront批量下載文件

我有我的服務器上的網站和s3上的所有mp3,然後通過cloudfront發佈。到現在爲止還挺好。

客戶端現在希望用戶能夠選擇多個音樂曲目,然後將它們全部批量下載或批量下載,而不是一次下載1個。

通常我會將所有文件放入一個zip文件中,然後向用戶提供一個指向該新zip文件的鏈接以供下載。在這種情況下,由於文件在s3上,需要我首先將所有文件從s3複製到我的網絡服務器,然後將它們處理成zip文件,然後從我的服務器上下載。

是否有無論如何我可以創建一個壓縮s3或CF或有一些批量/組文件到一個zip?

也許我可以設置一個EC2實例來處理這個問題?

我會非常感謝一些方向。

最佳

+0

我面對完全相同的情況,請讓我知道你是如何處理這種情況?謝謝... – Siva

+0

多線程是答案 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html –

回答

1

恐怕你將無法創建批次W/O額外的處理。啓動一個EC2實例可能是一個選項,可以爲每個用戶創建一個批次

1

我面臨的是確切的同樣的問題。到目前爲止,我能找到的唯一的事情就是亞馬遜的s3sync工具:

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

就我而言,我使用Rails +的回形針插件,這意味着我已經沒有辦法能夠輕鬆下載所有用戶的圖像一次去,因爲這些文件分散在很多子目錄中。

但是,如果您可以將您的用戶以更好的方式文件,這樣說:

/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?