symfony - 如何在 Controller 中为 Symfony Sonata Media 生成 Amazon S3 图像拇指路径

标签 symfony amazon-s3 sonata-media-bundle

我需要使用 Sonata Media Bundle 在 Symfony2 Controller 内生成 Amazon S3 媒体拇指。

这是我与sonata_media相关的config.yml

sonata_media:
    default_context: default
    db_driver: doctrine_orm
    contexts:
        default:
            providers:
                - sonata.media.provider.image
                - sonata.media.provider.file
            formats:
                small: { width: 100 , quality: 90}
                medium: { width: 500 , quality: 90}
                big:   { width: 1000 , quality: 90}
        image:
            providers:
                - sonata.media.provider.image
                - sonata.media.provider.file
            formats:
                small: { width: 100 , quality: 90}
                medium: { width: 500 , quality: 90}
                big:   { width: 1000 , quality: 90}
        resource:
            providers:
                - sonata.media.provider.file
            formats:
                medium: { width: 500 , quality: 90}
    providers:
        image:
            filesystem: sonata.media.filesystem.s3
            resizer: sonata.media.resizer.square
        file:
            filesystem: sonata.media.filesystem.s3
            resizer:    false

在我的 Controller 中,我尝试使用这样的东西:

        $provider = $this->container->get("sonata.media.provider.image");
        $url      = $provider->generatePublicUrl($media, 'small');

但是返回的值是这个

        /uploads/media/image/0001/01/thumb_1_small.jpeg

而不是 Amazon S3 Media 拇指。

有什么建议吗? 谢谢。

最佳答案

您忘记设置cdn服务器路径,默认为:“/uploads/media”。

如果您使用 Amazon S3,您的路径应为:“http://YOUR_REGION/YOUR_BUKET_NAME

这是我的sonata_media.yml(在config.yml中导入)

imports:
     - { resource: amazon_s3_parameters.yml }
sonata_media:
    default_context: default
    db_driver: doctrine_orm 
    contexts:
        guideimage:
            providers:
                    - sonata.media.provider.image
            formats:
                thumbnail: { width: 128 , quality: 100}
                big: { width: 1500 , quality: 100}
        default:
            providers:
                - sonata.media.provider.image
                - sonata.media.provider.file
            formats:
    cdn:
        server:
            path: http://%s3_region%/%s3_bucket_name%
    filesystem:
        s3:
            bucket:     %s3_bucket_name%
            accessKey:  %s3_access_key%
            secretKey:  %s3_secret_key%
            region:     %s3_region%
            storage:    standard
            acl:        public
            create:     true
            encryption: aes256
            cache_control: max-age=86400

当然,%s3_region% 和 %s3_bucket_name% 是参数,在我的例子中:

s3_region: s3.amazonaws.com
s3_bucket_name: mybucket

关于symfony - 如何在 Controller 中为 Symfony Sonata Media 生成 Amazon S3 图像拇指路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197935/

相关文章:

symfony - 将奏鸣曲媒体路径保存到 Twig 变量中

php - 从 Twig 模板调用时在 Controller 中获取参数

php - 有教义的 Symfony2 用户

php - Symfony3 queryBuilder 如何使用 OR 进行搜索以及如何搜索子字符串?

java - 将 BufferedImage 对象作为文件保存到 Amazon S3

php - 修改 Sonata Media Bundle 时预览列消失

mysql - 如何在 Symfony 和 Doctrine 中连接两个实体?

amazon-web-services - 使用 GitHub Flavored Markdown 显示来自 AWS S3 的图像

amazon-web-services - 给定一个 S3 路径和一个有效的 key 和 secret ,我如何更新对象缓存控制 header ?

sonata-admin - 没有生成缩略图