簡體   English   中英

如何創建存儲在Amazon S3存儲桶中的文件列表,並將其顯示為下載鏈接?

[英]How do I create a list of files stored in my Amazon S3 bucket and display them as download links?

我在Amazon S3存儲桶中有很多視頻,我想將它們作為列表顯示在我的網站上。 單擊列表中的任何項目將下載視頻。

我正在使用Python和Flask。 我目前在屏幕上顯示的網址和名稱,但無法下載。 在python中,僅在S3鍵上使用“ get_file”函數會很簡單,但我不知道如何調用此方法。 看起來應該很簡單,但是我可能不得不在html'onClick'中使用javascript。

我是javascript的新手,所以這可能是一個選擇,但我最想只訪問內置的boto方法。

目前我有鑰匙:

from boto.s3.connection import S3Connection

def get_video_keys():
key = local_settings.local_vars['AWS_ACCESS_KEY_ID']
skey = local_settings.local_vars['AWS_SECRET_ACCESS_KEY']
bucket = local_settings.local_vars['VIDEO_BUCKET_NAME']

conn = S3Connection(key, skey)
mybucket = conn.get_bucket(bucket)
keys = mybucket.get_all_keys()
return keys

還有一些html使用Jinja2模板顯示它們。

{% for key in keys %}
        <li><div><a href="{{ key.generate_url(3600) }}"> {{ key.name }}</a></div></li>
{% endfor %}

在線查看僅找到了下載所有文件的方法,而不是下載響應單擊事件的方法。

更新9/5/13

這實際上在Firefox上可以正常工作,但在Chrome / Chromium中卻無能為力。

您可以使用generate_url生成要下載的URL。

例如:

urls = [key.generate_url(100) for key in keys]

然后,您將獲得一些URL,這些URL將在100秒后失效。

編輯

當您有一些特殊字符時,請使用urllib.quote對其進行轉義:

new_urls = [urllib.quote(url) for url in urls]

您可以在服務器上安裝s3fs ,以將S3存儲桶“掛載”為文件系統。 s3fs是Amazon-S3的Fuse的實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM