【发布时间】:2016-02-19 05:05:19
【问题描述】:
我正在使用 SonataMediaBundle,直到现在我一直在 Symfony 的 web 文件夹中公开上传文件。这是我的配置文件的一部分:
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
- sonata.media.provider.vimeo
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
profile_pics: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
- sonata.media.provider.vimeo
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: %cdn_server_path% # http://media.sonata-project.org/
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
在我的parameters.yml 中有cdn_server_path: /uploads/media/。
这将上传web/uploads/media/contextname/0001/01/***中的文件。
这些文件位于公共文件夹中,所有人都可以看到这些文件。我知道我可以在app/Resources/ 的某个地方更改此文件夹,但这会使我的所有文件都成为私有文件,这是我不想要的。私有,我的意思是它们应该由控制器以某种方式提供服务。
如何区分一些文件是公开的,而另一些文件是私人的?有没有办法让某个上下文上传文件与另一个不同?还是其他方式?
此外,当将文件上传到 app/Resources 文件夹时,它们无法预览,因为它们的 url 变为 http://website.com/app/Resources/media/profile_pics/0001/01/85e05ab9685b1745af4e64ff98ef91eed6e4ccdf.jpeg 不公开,因为它不在 web 文件夹中,这是 Symfony 唯一拥有的公开文件。如何做到这一点?
编辑:我已经设法完成了上传部分(检查下面的答案),但检索部分有点麻烦。我仍在寻找一种方法。
【问题讨论】:
标签: php symfony sonata-admin sonata-media-bundle