【发布时间】:2015-02-07 13:35:32
【问题描述】:
我正在努力使用 Amazon S3 SDK 重命名同一存储桶中的文件。我指的是 API 文档中的 copy object。
这是我的电话,但它一直返回“指定的存储桶不存在”。
$clients = S3Client::factory(array(
'key' => 'key',
'secret' => 'secret'
));
try {
$result = $clients->copyObject(array(
'ACL' => 'private',
// Bucket is required
'Bucket' => 'david1982.audio',
// CopySource is required
'CopySource' => 'mp3/music.mp3',
// Key is required
'Key' => 'mp3/music_name_updated.mp3',
'MetadataDirective' => 'REPLACE'
));
echo json_encode($result);
} catch (Exception $e) {
echo json_encode($e->getMessage());
}
在有人指出显而易见的问题并问“你的桶存在吗?”是的,它确实存在。我可以使用相同的密钥进行呼叫并从该存储桶中获取我的所有文件。
我真的希望能够通过 API 重命名文件。您可以在 Amazon S3 浏览器中执行此操作。
找到解决方案
由于某种原因,您必须在 CopySource 中包含存储桶。
$result = $clients->copyObject(array(
'ACL' => 'private',
// Bucket is required
'Bucket' => 'david1982.audio',
// CopySource is required
'CopySource' => 'david1982.audio/mp3/music.mp3',
// Key is required
'Key' => 'mp3/music_name_updated.mp3',
'MetadataDirective' => 'REPLACE'
));
【问题讨论】:
-
您能否发布错误消息的确切措辞?
-
指定的bucket不存在
-
您是否尝试过在客户端工厂中指定区域?
-
嗨,安东尼,感谢您的帮助,但这并不是说我可以将文件复制到不同的存储桶,但不能重命名。
-
环顾四周,这种问题可能是bucket的命名规则造成的。但是这个名字在你的例子中看起来很合适。
标签: php amazon-web-services amazon-s3 rename