我知道S3中没有文件夹的概念,它使用平面文件结构。但是,为了简单起见,我将使用术语“文件夹”。
先决条件:
问题:
可以使用AWS PHP SDK上传文件夹。但是,该文件夹只能由上传文件夹的用户访问,而不是像我希望的那样是公共可读的。
步骤:
$sharedConfig = [
'region' => 'us-east-1',
'version' => 'latest',
'visibility' => 'public',
'credentials' => [
'key' => 'xxxxxx',
'secret' => 'xxxxxx',
],
];
// Create an SDK class used to share configuration across clients.
$sdk = new Aws\Sdk($sharedConfig);
// Create an Amazon S3 client using the shared configuration data.
$client = $sdk->createS3();
$client->uploadDirectory("foo", "bucket", "foo", array(
'params' => array('ACL' => 'public-read'),
'concurrency' => 20,
'debug' => true
));
成功标准:
我可以使用“静态”链接访问上传文件夹中的文件。 Fx的:
https://s3.amazonaws.com/bucket/foo/001.jpg
答案 0 :(得分:1)
我通过使用已定义的" Before Execute"来修复它。功能。
$result = $client->uploadDirectory("foo", "bucket", "foo", array(
'concurrency' => 20,
'debug' => true,
'before' => function (\Aws\Command $command) {
$command['ACL'] = strpos($command['Key'], 'CONFIDENTIAL') === false
? 'public-read'
: 'private';
}
));
答案 1 :(得分:0)
使用可以使用:
$s3->uploadDirectory('images', 'bucket', 'prefix',
['params' => array('ACL' => 'public-read')]
);