我使用SonataMediaBundle,直到現在我已經在Symfony的web
文件夾中公開上傳文件。下面是我的配置文件的一部分:SonataMediaBundle的公共和私人媒體上傳到不同的文件夾(網頁和私人)
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/
以上某個地方更改此文件夾,但這會使我的所有文件變爲私人,這是我不想要的。私下來說,我的意思是他們應該由管理員以某種方式爲其服務。
我該如何區分一些公開的文件和其他私人文件?有沒有辦法讓某個上下文上傳文件的方式與另一個不同?或者其他方式?
此外,上傳文件到應用程序/資源文件夾時,它們無法預覽,因爲它們的url變成http://website.com/app/Resources/media/profile_pics/0001/01/85e05ab9685b1745af4e64ff98ef91eed6e4ccdf.jpeg,因爲它不在Web文件夾中,這是Symfony唯一的公共文件。如何才能做到這一點?
編輯:我設法做了上傳部分(檢查下面的答案),但檢索部分有點麻煩。我仍在尋找一種方法來做到這一點。