如何从浏览器在 s3 中创建新的“文件夹”

How to create new ‘folder’ in s3 from browser

基本上我有一个 PHP crud 系统。当我添加一条新的 php 记录时,我还想将 API post 添加到存储桶中以创建一个新文件夹并以某种方式将该新文件夹与该记录相关联。这样,当我搜索该记录时,我就可以从该特定文件夹中列出该记录的对象。如何创建此文件夹?

您不需要创建文件夹。

Amazon S3 中实际上并不存在文件夹。相反,对象 的文件名 (Key) 包含完整路径,包括对象的文件名

这意味着您可以像这样复制文件,即使文件夹不存在:

aws s3 cp foo.txt s3://my-bucket/one/two/foo.txt

为了让 "appear" 像普通文件系统一样,Amazon S3 管理控制台会将 onetwo 显示为文件夹,但它们实际上并不存在。事实上,如果你 运行 这个命令:

aws s3 rm s3://my-bucket/one/two/foo.txt

这不仅会删除对象,而且 "folders" 也会消失,因为它们本来就不存在。

管理控制台还可以 "create" 一个文件夹,但它实际上只是创建一个 zero-length 对象 名称(包括完整路径) 的文件夹。这允许 "empty folder" 出现在控制台中(即使它不存在)。

因此,如果您的应用程序希望将 "folder" 与记录相关联,它只需要 路径 与记录相关联。需要实际创建文件夹。然后,创建以该路径为前缀的文件,它们将 出现在文件夹 中,但实际上它们的文件名 (Key) 包括路径和文件名。

您的应用程序可以调用 S3 并请求给定前缀的对象列表,并且只会返回 "folder"(前缀)中的对象。