我正在嘗試列出prefixS3 存儲桶中特定的所有項目。這是我的目錄結構:Item1/ Item2/ Item3/ Item4/ image_1.jpg Item5/ image_1.jpg image_2.jpg當我設置prefex為 時Item1/Item2,我得到以下鍵:Item1/Item2/Item1/Item2/Item3/Item4/image_1.jpgItem1/Item2/Item3/Item5/image_1.jpgItem1/Item2/Item3/Item5/image_2.jpg我想得到的是:Item1/Item2/Item1/Item2/Item3Item1/Item2/Item3/Item4Item1/Item2/Item3/Item5Item1/Item2/Item3/Item4/image_1.jpgItem1/Item2/Item3/Item5/image_1.jpgItem1/Item2/Item3/Item5/image_2.jpg無論如何,在 golang 中可以實現這一點嗎?
1 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
Amazon S3 中實際上并不存在文件夾。它是一個扁平的對象存儲系統。
例如,使用AWS 命令行界面 (CLI),我可以將命令復制到 Amazon S3 存儲桶:
aws?s3?cp?foo.txt?s3://my-bucket/folder1/folder2/foo.txt
即使不存在,這項工作也folder1
很好folder2
。這是因為對象存儲時使用包含對象完整路徑的Key
(文件名)。因此,上面的對象實際上有一個 Key(文件名):
folder1/folder2/foo.txt
然而,為了讓事情變得更容易,Amazon S3 管理控制臺讓它看起來好像有文件夾。在 S3 中,這些稱為通用前綴而不是文件夾。
因此,當您在指定 a 的同時進行 API 調用以列出存儲桶的內容時Prefix
,它只會顯示“列出 Key 以該字符串開頭的所有對象”。
您的列表不顯示任何文件夾,因為它們實際上并不存在。
現在,只是與我自己矛盾,實際上可以創建一個文件夾(例如,通過單擊管理控制臺中的“創建文件夾”)。這實際上創建了一個與文件夾同名的零長度對象。然后,該文件夾將出現在列表中,因為它實際上列出的是零長度對象而不是文件夾。
這可能就是為什么Item1/Item2/
出現在您的列表中,但Item1/Item2/Item3
沒有出現的原因。在某個階段,某人必須“創建了一個名為 的文件夾”?Item1/Item2/
,該文件夾實際上使用該密鑰創建了一個零長度對象。
- 1 回答
- 0 關注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消