AmazonS3 + KnpGaufretteBundle如何为文件设置公共acl?

 赵_文赞 发布于 2022-12-09 15:32

我正在使用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');

我收到以下消息:

找不到文件"test.txt".

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

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

1 个回答
  • 好吧,看来KnpGaufretteBundle的文档看起来像丛林☹......

    这是我的解决方案:

    #app/config/config.yml
    
    services:
        acme.aws_s3.client:
            class: Aws\S3\S3Client
            factory_class: Aws\S3\S3Client
            factory_method: 'factory'
            arguments:
                -
                    credentials:
                        key: %amazon_s3.key%
                        secret: %amazon_s3.secret%
                    region: %amazon_s3.region%
                    version: %amazon_s3.version%
    
    # knp_gaufrette
    knp_gaufrette:
        adapters:
            profile_photos:
                aws_s3:
                    service_id: 'acme.aws_s3.client'
                    bucket_name: 'myBucket'
                    options:
                        directory: 'myDirectory'   
                        acl: 'public-read'
    

    在我的第一次试验中,这段代码无效,因为我的AwsS3用户没有正确的权限!因此,请确保您的用户的策略允许访问存储桶!

    2022-12-11 02:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有