使用 php sdk 将文件直接上传到 AWS S3 中的文件夹的语法是什么?
我使用以下命令成功上传到存储桶:
$response = $s3->create_object($bucket, $file_name, array('fileUpload' => $file_path))
咔嚓!
试试这种方式
$s3->create_object($bucket, 'folder/filename', $options)
只需做一件事,添加"path/"例如:如果您在存储桶中有一个文件夹"视频",则必须在"键"=>"视频/视频名称-这里"中添加这样的路径。
try {
// Upload data.
$result = $s3Client->putObject([
'Bucket' => bucket-name,
'Key' => 'videos/video-name', //add path here
'Body' => fopen($video, 'r'),
'ACL' => 'public-read'
]);
print_r($result['ObjectURL']);
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
由于这里的所有答案都非常古老,这是Google上的第一个结果,因此我发布了更新的版本:
$client = new AwsS3S3Client([
'region' => '-- your region --',
'version' => 'latest',
'credentials' => [
'key' => "-- your IAM --",
'secret' => "-- your secret --",
]
]);
$dir = '/local/directory';
$bucket = 'my-bucket';
$keyPrefix = '';
$options =[
'params' => ['ACL' => 'public-read'],
'concurrency' => 20,
'debug' => true
];
$client->uploadDirectory($dir, $bucket, $keyPrefix, $options);
这是您可以尝试的另一种方法
$this->Aws->bucket = 'bucket'
$old_file = $dir. '/'.old_file_name;
$new_file = $dir. '/'.new_file_name;
$file_permission = 'private';
$this->Aws->upload($old_file , $new_file , $file_permission);