php - 如何使用传输管理器在 AWS-SDK-PHP v3.2 上将 ACL 设置为公开读取

标签 php amazon-web-services amazon-s3

好的,我的第一个 SO 问题,很好。

我在寻找这个问题的答案时遇到了问题。是的,我试过了 传输构造函数的选项没有提到任何 ACL 选项。 我在谷歌上的搜索要么是空白要么是 2.x 版 这是我的代码

$options[] = [
'DEBUG' => true,
];
// Where the files will be transferred to
$dest = 's3://newbucket/'.$UUID;
// Create a transfer object.
$manager = new \Aws\S3\Transfer($s3, $path, $dest, $options );
// Perform the transfer synchronously.
$manager->transfer();
$promise = $manager->promise();
$promise->then(function () {
    echo 'Done!';
});

一切都上传正常,但文件不是公开阅读的 我在哪里/如何对在 VERSION 3.2 中上传的文件设置公开阅读

最佳答案

您可以将一个'before' 闭包添加到要传递给可以处理分配权限的传输管理器的选项数组中。尝试用这个替换你的管理器实例化代码:

$manager = new \Aws\S3\Transfer($s3, $path, $dest, [
    'before' => function (\Aws\CommandInterface $command) {
        if (in_array($command->getName(), ['PutObject', 'CreateMultipartUpload'])) {
            $command['ACL'] = 'public-read';
        }
    },
]);

关于php - 如何使用传输管理器在 AWS-SDK-PHP v3.2 上将 ACL 设置为公开读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567862/

相关文章:

javascript - 仅在选中复选框时显示数据

php - Laravel Eloquent 地从 sql 中查找数组

php - 如何在 TWIG 中使用转储?

amazon-web-services - 如何找到可供我的 IAM 用户使用的镜像 ID、实例类型和子网 ID?

amazon-web-services - AWS Fargate 私有(private)子网,从 ECR 拉取

php - 在 Laravel 应用程序中将数据库从 Postgre 更改为 MySQL 会导致超时/Symfony 异常

python - 如何使用python从S3下载视频?

amazon-ec2 - 我可以创建包含多个 ebs 卷(即 sda 和 sdb)的 AMI

ruby-on-rails - Ruby aws-sdk - 超时错误

python - 在aws中获取表的列名作为元组而不是字符串