我很难用Amazon S3 SDK重命名同一个文件夹中的文件.我指的是API文档中的复制对象.
这是我的电话,但它一直返回"指定的存储桶不存在".
$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' ));
小智.. 10
如果有人最终在这里寻找如何在PHP中如何做到这一点的最佳方法,你可以重命名s3文件,如下所示:
$s3sdk = new Sdk($awsConfig); $s3 = $s3sdk->createS3(); $s3->registerStreamWrapper(); rename($oldName, $newName);
两个名称都需要包含完整的s3路径,例如:
"s3://yourBucketName/path/to/file"
基本上registerStreamWrapper()
为s3文件启用PHP文件系统命令.
是的,要复制对象,您必须指定要复制的对象的存储桶名称.
以下是官方文档中的示例:http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html)
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Key Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object. $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", ));
复制对象后,您将不得不删除旧对象,这是一个示例:
$result = $client->deleteObject(array( 'Bucket' => 'string', 'Key' => 'string' ));
如果有人最终在这里寻找如何在PHP中如何做到这一点的最佳方法,你可以重命名s3文件,如下所示:
$s3sdk = new Sdk($awsConfig); $s3 = $s3sdk->createS3(); $s3->registerStreamWrapper(); rename($oldName, $newName);
两个名称都需要包含完整的s3路径,例如:
"s3://yourBucketName/path/to/file"
基本上registerStreamWrapper()
为s3文件启用PHP文件系统命令.