2

Amazon S3 バケットに多数のビデオがあり、ウェブサイトにリストとして表示したいと考えています。リスト内の任意の項目をクリックすると、ビデオがダウンロードされます。

Python と Flask を使用しています。現在、URL と名前が画面に表示されていますが、ダウンロードできません。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

また、Jinja2 テンプレートを使用してそれらを表示するための html もあります。

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

オンラインで検索すると、クリック イベントに応答してダウンロードするのではなく、すべてのファイルをダウンロードする方法しか見つかりませんでした。

2013 年 9 月 5 日更新

これは実際には Firefox では問題なく動作しますが、Chrome/Chromium では何もしていません。

4

2 に答える 2

1

generate_urlを使用して、ダウンロード用の URL を生成できます。

例えば:

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

次に、100 秒で有効期限が切れるいくつかの URL を取得します。

編集

特殊文字がある場合は、urllib.quote を使用してそれらをエスケープします。

new_urls = [urllib.quote(url) for url in urls]
于 2013-05-08T10:20:21.507 に答える
0

サーバーにs3fsをインストールして、S3 バケットをファイル システムとして「マウント」できます。s3fs はFuse for amazon-S3の実装です

于 2013-05-08T10:06:42.427 に答える