我想将Amazon Cloudfront服务用作CDN。 我的问题是: 如何让Gregwar / ImageBundle与S3一起使用?
所以这个:
{% set img_path = asset('assets/' ~ app.request.get('product_id') ~ '/images/' ~ contents.background) %}
<img src="{{ web_image(img_path).forceResize(1000) }}" alt="{{contents.title|default('') }}">
生成这个:
https://s3-cdn.com/cache/f/5/f/1/4/f5f1407eb85e38e94019a03082b10611f57b22e5.png
而不是这个:
/cache/f/5/f/1/4/f5f1407eb85e38e94019a03082b10611f57b22e5.png
(本地fylesystem)
一些更新: 我可以用这个找出资产倾销: Dump Symfony2 assets to Amazon S3 我无法将权限设置为对公众可读。 我在Symfony中为S3(协议)编写了一个流包装器。
Gregwar / ImagineBundle似乎也不支持CDN ...... 当你追踪上传文件夹配置时,你可以看到...告诉我,如果我错了......
其他事情: https://github.com/symfony/symfony/issues/4014
关闭直接在S3上生成缓存不会被支持为 还有很多其他方法可以从您所在的计算机上移动文件 生成缓存到S3。
by fabpot
无论如何它被整理出来,因为我可以使用资产:在symfony命令行中安装,只是无法弄清楚使用S3 streamwrapper为上传/生成的资产设置公共访问...
剩下的问题:
使用正确的设置将symfony资产安装/转储到S3 可供公众使用
Gregwar / ImageBundle - &gt;生成的图像(即:forceResize(),通常是/ web / cache / ...)到CDN
另一个更新:
symfony assetic install / dump - &gt;我决定使用Bower和Grunt来获得相同的结果。仍然不知道如何为命令行添加公共亚马逊ACL事件...对不起,如果你知道的话,在这里添加评论
图片上传 - &gt;我正在&#34;延伸&#34; symfony UploadedFile所以当触发移动文件时,比正式的AWS SDK S3接管进程并处理它...会让你知道解决方案.... [更新]我无法修改移动方法在&#34;标准&#34;或非黑客的方式。所以我创建了一个帮助类(使用SDK)并在正确的位置对其进行了重构。
Gregwar / ImageBundle缓存(处理基于Twig&#34的图像;功能&#34;你知道.forceResize)仍然很出色...欢迎任何想法
干杯 格雷格
答案 0 :(得分:0)
如果https://s3-cdn.com不会改变,你可以为你的src连接它:
src="https://s3-cdn.com~{{ web_image(img_path).forceResize(1000) }}"
或者使一个twig扩展更清晰或覆盖web_image函数以正确构建你的url并返回正确的url,覆盖它会导致bundle只能用于S3。
这个问题含糊不清,他想上传到S3没有从中读取,这里的树枝无关。
有关上传的更多信息:
github.com/1up-lab/OneupFlysystemBundle/blob/master/Resources / ...这是一个很好的捆绑,它使用联盟/ flysystem看看页面看看他们如何处理上传到amazon flysystem.thephpleague.com/适配器/ AWS-S3-V3