如何为查看基于 Amazon S3 的静态网站的用户提供目录列表?

Posted

技术标签:

【中文标题】如何为查看基于 Amazon S3 的静态网站的用户提供目录列表?【英文标题】:How can I provide directory listings for those viewing my Amazon S3 based static website? 【发布时间】:2011-08-19 08:14:43 【问题描述】:

我有一个 Amazon S3 帐户,我想在其中存储多个文件目录。

我希望该网站的访问者能够查看和下载我放置在那里的文件和文件夹。

这些文件和文件夹会定期更改,我不希望每次添加或删除文件时都重写任何 html

如何安排我网站的查看者看到一个简单的文件/文件夹列表?

【问题讨论】:

【参考方案1】:

您可以使用 javascript 列出文件。

这是亚马逊提供的解决方案:

http://aws.amazon.com/code/Amazon-S3/1713

您将 list.html 放在要列出的每个目录中。

我已经制作了自己的列表文件,它提供了一个可折叠的树视图:

https://github.com/phatmann/jS3Tree/blob/master/index.html

如果您使用的是 S3 网站功能,这些文件都不起作用。

【讨论】:

似乎不起作用。 both.get 空白页面,尽管所有文件都是公开的并且没有作为网站存储桶运行。 @devdude,你能打开 Javascript 调试看看脚本是否在任何地方失败了吗? Firebug:响应为空 handleList()list.html(第 104 行)[中断此错误] filex = response.getElementsByTagName('Contents'); 对我也没有用,Rufus Pollock 的解决方案效果很好【参考方案2】:

我创建了一个简单的 JS,它创建了一个 HTML 样式的目录索引,可以满足您的需求:https://github.com/rgrp/s3-bucket-listing

您可以将它直接安装到您的 s3 存储桶或单独的网站中(感谢 S3 REST API 支持 CORS!)。自述文件对此有完整说明:https://github.com/rgrp/s3-bucket-listing

【讨论】:

【参考方案3】:

您应该使用Amazon S3 API 列出其中的存储桶和文件 一个桶可以代表一个文件夹(比在文件名上使用前缀更容易)

在创建您的存储桶并将文件上传到它们之后您可以通过List All My Buckets 请求在页面上显示存储桶一旦用户单击给定的存储桶,您就可以使用List Bucket 请求最后一次单击文件以生成对象的 url,以便用户可以在不浪费带宽的情况下下载它

您可以找到许多亚马逊 s3 api here 的实现

【讨论】:

这些 API 可以从 Javascript 调用吗?有样品吗?否则我不确定如何在浏览器中使用它们。我希望能在 S3 空间内提供一些服务。

以上是关于如何为查看基于 Amazon S3 的静态网站的用户提供目录列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Amazon S3 存储桶配置 SSL

我们如何为 Amazon S3 存储桶中的文件夹设置 CORS

在 Amazon S3 中托管静态网站而不使用 Amazon 路由 53

为啥托管静态网站时 Amazon S3 存储桶名称必须与网站名称相同

Amazon S3 Cloudfront 部署最佳实践

如何为Amazon EMR生成trustedCertificates.pem和certificateChain.pem文件?