我正在嘗試將一個(gè)文件夾復(fù)制到 aws s3 中的另一個(gè)文件夾,如下所示$s3 = S3Client::factory( array( 'credentials' => array( 'key' => 'testbucket', 'secret' => BUCKET_SECRET //Global constant ), 'version' => BUCKET_VERSION, //Global constant 'region' => BUCKET_REGION //Global constant ) );$sourceBucket = 'testbucket';$sourceKeyname = 'admin/collections/Athena'; // Object key$targetBucket = 'testbucket';$targetKeyname = 'admin/collections/Athena-New';// Copy an object.$s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}",));它拋出錯(cuò)誤為致命錯(cuò)誤:未捕獲的異?!癆ws\S3\Exception\S3Exception”,消息為“在“ https://testbucket.s3.us-east-2.amazonaws.com/admin/collections/Athena-New ”上執(zhí)行“CopyObject”時(shí)出錯(cuò); AWS HTTP 錯(cuò)誤:客戶端錯(cuò)誤:PUT https://testbucket.s3.us-east-2.amazonaws.com/admin/collections/Athena-New 導(dǎo)致404 Not Found響應(yīng): NoSuchKey指定的密鑰不存在。admin/collections/AthenaNoSuchKey指定的密鑰不存在。admin/collections/Athena29EA131A5AD9CB836OjDNLgbdLPLMd0t7MuNi4JH6AU5pKfRmhCcWigGAaTuRlq6MTXuRlq6MuNi4KfRmhCcWigGAaTuRlq6MTXi我不明白為什么它會生成錯(cuò)誤的存儲桶 url,例如https://testbucket.s3.us-east-2.amazonaws.com/admin/collections/Athena-New雖然正確的 aws 存儲桶 url 是https://s3.us-east-2.amazonaws.com/testbucket/admin/collections/Athena-New為什么它將存儲桶名稱附加到 url 中的 s3 之前?簡單來說,我想復(fù)制的內(nèi)容https://s3.us-east-2.amazonaws.com/testbucket/admin/collections/Athena至https://s3.us-east-2.amazonaws.com/testbucket/admin/collections/Athena-New
1 回答

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
無法在 Amazon S3 中“復(fù)制文件夾”,因?yàn)槲募A實(shí)際上并不存在。
相反,對象的完整路徑存儲在對象的Key
(文件名)中。
因此,一個(gè)對象可能被稱為:
admin/collections/Athena/foo.txt
如果您希望將所有對象從一個(gè)“文件夾”復(fù)制到另一個(gè)“文件夾”,那么您需要:
獲取給定存儲桶的列表
Prefix
(實(shí)際上是文件夾的完整路徑)循環(huán)遍歷返回的每個(gè)對象,并將對象一次一個(gè)復(fù)制到新名稱(有效地將其放入新文件夾中)
所以,它會復(fù)制admin/collections/Athena/foo.txt
到admin/collections/Athena-New/foo.txt
- 1 回答
- 0 關(guān)注
- 230 瀏覽
添加回答
舉報(bào)
0/150
提交
取消