python - 如何创建存储在我的 Amazon S3 存储桶中的文件列表并将它们显示为下载链接?

标签 python html web-services amazon-s3 boto

我在 Amazon S3 存储桶中有许多视频,我想将它们作为列表显示在我的网站上。单击列表中的任何项目将下载视频。

我正在使用 Python 和 Flask。我目前在屏幕上显示了网址和名称,但我无法下载它们。在 python 中,仅在 S3 key 上使用“get_file”函数会很简单,但我不知道如何调用此方法。看起来应该很简单,但我可能必须在 html“onClick”中使用 javascript。

我是 javascript 的新手,所以这可能是一个选项,但我最想只访问内置的 boto 方法。

目前我有 key :

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 上没有任何作用。

最佳答案

您可以使用 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]

关于python - 如何创建存储在我的 Amazon S3 存储桶中的文件列表并将它们显示为下载链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437795/

相关文章:

Python:从html获取 "id"或 "data-value"?

javascript - 鼠标坐标似乎错误地放置了 Raphael.js 对象

web-services - 如何在我的 POM.xml 中设置对 Spring Web 服务的依赖

python - 返回您为 API 测试目的指定的任何 http 状态代码的 Web 服务?

python - python列表计数方法的性能

python - 修改序列化值 - Django Rest Framework

python - python中类变量的继承

Javascript:带有前进/后退按钮的照片库

javascript - 在 Gmail 邮件中将 Google 表格范围(带或不带格式)作为 HTML 表格通过电子邮件发送

web-services - 从 Axis2 Web 服务内部设置 javax.net.ssl.trustStore