[英]Copying an object from one Amazon S3 bucket to another using PHP
I'm trying to copy a folder from one S3 bucket to another using PHP but it is causing me problems.我正在尝试使用 PHP 将一个文件夹从一个 S3 存储桶复制到另一个存储桶,但这给我带来了问题。 I can create the folder I want but I cannot copy from one folder to another.
我可以创建我想要的文件夹,但我无法从一个文件夹复制到另一个文件夹。 Here is my code.
这是我的代码。 Any help would be greatly appreciated
任何帮助将不胜感激
$key = '123';
$secret = '123';
$bucket = 'bck-users';
$keyname = $username;
try {
//Create bucket for user
$s3 = Aws\S3\S3Client::factory(array(
'region' => 'eu-west-1',
'version' => '2006-03-01',
'credentials' => array(
'key' => $key,
'secret' => $secret,
)
));
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
));
echo $result['ObjectURL'] . "\n";
}
catch (Exception $e){
echo $e->getMessage() . "\n";
}
//Copy default files to bucket
$sourceBucket = 'bck-users';
$sourceKeyname = 'default';
$targetBucket = $username;
$targetKeyname = 'default';
// Instantiate the client.
$s3 = S3Client::factory(array(
'region' => 'eu-west-1',
'version' => '2006-03-01',
'credentials' => array(
'key' => $key,
'secret' => $secret,);
// Perform a batch of CopyObject operations.
$batch = array();
$batch[] = $s3->getCommand('CopyObject', array(
'Bucket' => $targetBucket,
'Key' => $targetKeyname,
'CopySource' => $sourceBucket/$sourceKeyname,
));
}
try {
$successful = $s3->execute($batch);
}
catch (Exception $e){
echo $e->getMessage() . "\n";
}
$s3Client = new S3Client([
'region' => 'ap-southeast-1',
'version' => 'latest',
'credentials' => [
'key' => Yii::$app->params['key'],
'secret' => Yii::$app->params['secret'],
]
]);
$result = $s3Client->copyObject([
'Bucket' => Yii::$app->params['bucket'],
'CopySource' => 'sourcebucketname/objectkey',
'Key' => 'tragetbucketname/tragetkey',
]);
return $result;
Hi to everyone who comes here.大家好来到这里。
I suggest a copy
method that can copy to another bucket.我建议一种可以复制到另一个桶的
copy
方法。
public function CopyFile(string $key, $to)
{
$s3Client = new S3Client([
'version' => 'latest',
'region' => self::AWS_REGION,
'credentials' => [
'key' => self::AWS_KEY,
'secret' => self::AWS_SECRET
]
]);
$s3Client->copy(self::BUCKET_NAME, $key, self::BUCKET_NAME, $to);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.