私は 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/***
。
これらのファイルは public フォルダーにあるため、誰でも見ることができます。このフォルダを のどこかで変更できることはわかっていますapp/Resources/
が、そうするとすべてのファイルが非公開になってしまい、望ましくありません。プライベートとは、どういうわけか、コントローラーによって提供される必要があることを意味します。
一部のファイルを公開し、他のファイルを非公開にするにはどうすればよいですか? 特定のコンテキストでファイルを別のコンテキストとは異なる方法でアップロードする方法はありますか? それとも他の方法ですか?
また、ファイルを app/Resources フォルダーにアップロードすると、URL がhttp://website.com/app/Resources/media/profile_pics/0001/01/85e05ab9685b1745af4e64ff98ef91eed6e4ccdf.jpegになるためプレビューできません。 Symfony が持っている唯一の公開ファイルである web フォルダーにはありません。これはどのように行うことができますか?
編集:アップロードの部分はなんとかできましたが(以下の回答を確認してください)、取得の部分は少し面倒です。私はまだそれを行う方法を探しています。