2

我无法让 LiipImagineBundle 识别流路径。它不加载图像并应用指定的过滤器集,而是采用流路径并将其视为正常的 Web 路径。

这是我能够从各种来源拼凑而成的配置。我找不到任何解决这个问题的方法。就 LiipImagineBundle 而言,这些设置似乎根本没有取得任何成果。没有错误或警告被抛出,并且日志中没有任何内容。它完全忽略了我的配置。

#/src/Acme/StorageBundle/Resources/config/services.yml
services:
  acme_storage.amazon_s3:
    class:        %acme_storage.amazon_s3.class%
    arguments:
      options:
        key:      %acme_storage.amazon_s3.aws_key%
        secret:   %acme_storage.amazon_s3.aws_secret_key%
        certificate_authority: true

  liip_imagine.binary.loader.stream.amazon_s3:
    class: %liip_imagine.binary.loader.stream.class%
    arguments:
      - @liip_imagine
      - 'gaufrette://amazon_s3/'
    tags:
      - name:   liip_imagine.binary.loader
        loader: stream.amazon_s3

  liip_imagine.cache.resolver.amazon_s3:
    class: Liip\ImagineBundle\Imagine\Cache\Resolver\AmazonS3Resolver
    arguments:
      - @acme_storage.amazon_s3
      - %amazon_s3_bucket_name%
    tags:
      - name: liip_imagine.cache.resolver
        resolver: cache.amazon_s3

# /app/config/config.yml
knp_gaufrette:
  stream_wrapper:
    protocol:     gaufrette
    filesystems:
      amazon_s3:  photo_storage
  adapters:
    photo_storage:
      amazon_s3:
        amazon_s3_id: beebop_storage.amazon_s3
        bucket_name:  %amazon_s3_bucket_name%
        create:       false
        options:
          create:     true
          region:     %amazon_s3_region%
  filesystems:
    photo_storage:
      adapter:        photo_storage
      alias:          photo_storage_filesystem

liip_imagine:
  cache:              cache.amazon_s3
  loaders:
    stream.amazon_s3:
      stream:
        wrapper:      gaufrette://amazon_s3

  filter_sets:
    cache: ~
    event_small:
      data_loader:    stream.amazon_s3
      quality:        75
      filters:
        thumbnail:
          size:       [60, 60]
          mode:       outbound
          allow_upscale: true

枝条:

{{ 'gaufrette://amazon_s3/file.jpg'|imagine_filter('event_small') }}

产生:

http://example.com/media/cache/resolve/event_small/gaufrette://amazon_s3/file.jpg
4

1 回答 1

0

几周前我就这样做了,但我没有使用 s3 作为缓存。您的问题似乎与图像路径有关。在树枝上试试这个:

{{ 'file.jpg'|imagine_filter('event_small') }}

由于您的数据加载器知道您正在使用什么流,缓存解析器知道文件所在的 URL,然后您只需要传递文件名。

与您的配置不同的另一件事是,我的/在 gaufrette 路径上具有领先地位:

liip_imagine:
  loaders:
    stream.amazon_s3:
      stream:
        wrapper:      gaufrette://amazon_s3/

希望它可以提供帮助。

于 2014-09-26T15:25:30.587 回答