gpt4 book ai didi

symfony - AmazonS3 + KnpGaufretteBundle 如何为文件设置公共(public) acl?

转载 作者:行者123 更新时间:2023-12-04 09:40:12 25 4
gpt4 key购买 nike

我正在使用 KnpGaufretteBundle要在 Amazon S3 上存储图片,我可以使用以下代码轻松创建一个文件:

public function s3CreatFileAction(Request $request) {

$filesystem = $this->get('knp_gaufrette.filesystem_map')->get('profile_photos');
$filesystem->write('test.txt', 'hello world');

[...]
}

问题是我无法访问该文件...
$filesystem = $this->get('knp_gaufrette.filesystem_map')->get('profile_photos');
$file = $filesystem->get('test.txt');

我收到以下消息:

The file "test.txt" was not found.



我认为这是因为“test.txt”文件是使用“私有(private)”acl 创建的(当我通过 S3 控制台将其公开时,我可以访问它)。

所以我的问题是如何在创建对象时定义公共(public) acl?

最佳答案

这是一个更灵活的解决方案,它允许仅对某些文件设置“公共(public)”访问权限:

$filesystem = $this->get('knp_gaufrette.filesystem_map')->get('profile_photos');
$filesystem->setMetadata('test.txt', ['ACL' => 'public-read']);
$filesystem->write('test.txt', 'hello world');

元数据数组覆盖了文件系统的全局选项,在我的例子中,默认有一个私有(private) ACL。

关于symfony - AmazonS3 + KnpGaufretteBundle 如何为文件设置公共(public) acl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com