创建空文件夹 S3 ruby SDK
create empty folder S3 ruby SDK
我想使用 ruby SDK 在 Amazon S3 中创建一个空文件夹。我读到 S3 中没有文件夹概念,所以理论上要创建一个文件夹,您只需创建一个带有尾随“/”的空对象“
s3 = Aws::S3::Client.new( region: 'eu-west-1',
credentials: creds)
s3.put_object(bucket: "my_bucket",
key: "my_folder/")
这样做会在我的存储桶上创建一个空对象,但是如果我尝试上传这样的文件:
s3.put_object(bucket: "my_bucket",
key: "my_folder/myfile")
它没有在 my_folder 中创建文件。它维护旧的空对象,并创建一个文件夹和一个文件。所以在这两个命令之后,桶结构是:
my_bucket/
my_folder
my_folder/
my_file
为什么会这样?为什么它创建对象 my_folder 两次?我应该如何创建一个空文件夹供以后使用?
正如你所说,S3 没有文件夹的概念,"empty" 或没有,它只是有对象,其中可以有一个“/”来模仿文件中文件夹的命名约定系统.
"my_folder" 没有被处理两次,只有两个对象的名称以 "my_folder/".
开头
如果你想坚持这种有文件夹的范式none,你必须做的是尽快删除你的 "my_folder/" 对象创建第一个 "my_folder/*" 对象。
当您确认文件夹不存在时,您真的不应该问 "How should I create an empty folder for later use?"。
S3 的行为符合预期。它不支持文件夹。当您使用名称 my_folder/myfile
创建文件时,S3 使用键 my_folder/myfile
创建对象。 "folders" 的思想是围绕带前缀的访问而构建的。这样,您就可以像这样在 "folder" 中列出对象:
bucket.objects.with_prefix('my_folder').collect(&:key)
# => ["my_folder/myfile"]
当任何键包含“/”时,Amazon S3 虚拟文件夹 spring 就会存在。在 S3 控制台中浏览存储桶时,它会扫描对象键以查找常见前缀,然后使用该前缀显示存储桶的子集。
给定以下对象键:
- photos/family/reunion.jpg
- photos/family/vacation.jpg
- videos/funny.mp4
然后 Amazon S3 将显示顶级文件夹 "photos" 和 "videos"。如果删除 "videos/funny.mp4" 对象,则 "videos" 目录将消失。
我想使用 ruby SDK 在 Amazon S3 中创建一个空文件夹。我读到 S3 中没有文件夹概念,所以理论上要创建一个文件夹,您只需创建一个带有尾随“/”的空对象“
s3 = Aws::S3::Client.new( region: 'eu-west-1',
credentials: creds)
s3.put_object(bucket: "my_bucket",
key: "my_folder/")
这样做会在我的存储桶上创建一个空对象,但是如果我尝试上传这样的文件:
s3.put_object(bucket: "my_bucket",
key: "my_folder/myfile")
它没有在 my_folder 中创建文件。它维护旧的空对象,并创建一个文件夹和一个文件。所以在这两个命令之后,桶结构是:
my_bucket/
my_folder
my_folder/
my_file
为什么会这样?为什么它创建对象 my_folder 两次?我应该如何创建一个空文件夹供以后使用?
正如你所说,S3 没有文件夹的概念,"empty" 或没有,它只是有对象,其中可以有一个“/”来模仿文件中文件夹的命名约定系统.
"my_folder" 没有被处理两次,只有两个对象的名称以 "my_folder/".
开头如果你想坚持这种有文件夹的范式none,你必须做的是尽快删除你的 "my_folder/" 对象创建第一个 "my_folder/*" 对象。
当您确认文件夹不存在时,您真的不应该问 "How should I create an empty folder for later use?"。
S3 的行为符合预期。它不支持文件夹。当您使用名称 my_folder/myfile
创建文件时,S3 使用键 my_folder/myfile
创建对象。 "folders" 的思想是围绕带前缀的访问而构建的。这样,您就可以像这样在 "folder" 中列出对象:
bucket.objects.with_prefix('my_folder').collect(&:key)
# => ["my_folder/myfile"]
当任何键包含“/”时,Amazon S3 虚拟文件夹 spring 就会存在。在 S3 控制台中浏览存储桶时,它会扫描对象键以查找常见前缀,然后使用该前缀显示存储桶的子集。
给定以下对象键:
- photos/family/reunion.jpg
- photos/family/vacation.jpg
- videos/funny.mp4
然后 Amazon S3 将显示顶级文件夹 "photos" 和 "videos"。如果删除 "videos/funny.mp4" 对象,则 "videos" 目录将消失。