3

我需要使用 Sonata Media Bundle 在 Symfony2 控制器中生成 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

在我的控制器内部,我试图使用这样的东西:

        $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 拇指。

有什么建议吗?谢谢。

4

1 回答 1

1

你忘了设置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
于 2015-06-02T09:04:40.940 回答