我正在使用 SonataMediaBundle,直到现在我一直在web
Symfony 的文件夹中公开上传文件。这是我的配置文件的一部分:
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 唯一拥有的公共文件。如何才能做到这一点?
编辑:我已经设法完成了上传部分(检查下面的答案),但检索部分有点麻烦。我仍在寻找一种方法来做到这一点。