我已经使用奏鸣曲媒体包上传了一些图片,如建议here
$media = new Media;
$media->setBinaryContent($file->getRealPath());
$media->setContext('myContext');
$media->setProviderName('sonata.media.provider.image');
$mediaManager->save($media);
以前的代码正确地创建了媒体所有文件(根据上下文配置)和数据库注册表。现在我为删除媒体所做的调用是这样的:
$media = $mediaManager->findOneBy(array('id' => $id));
$mediaManager->delete($media)
它正确地从数据库中删除了媒体数据,但没有从配置的文件系统中删除,仍有一些图像与上传的媒体相关联。我计划使用 S3 文件系统,所以我需要使用相同的框架删除所有文件系统
我最相关的奏鸣曲配置(也使用建议的)是这样的:
sonata_media:
default_context: default
db_driver: doctrine_orm
class:
media: MyApp\MediaBundle\Entity\Media
gallery: MyApp\MediaBundle\Entity\Gallery
gallery_has_media: MyApp\MediaBundle\Entity\GalleryHasMedia
contexts:
default:
providers:
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 200, quality: 77}
myContext:
providers:
- sonata.media.provider.image
formats:
normal: { width: 350, quality: 75}
tmb: { width: 100, quality: 75}
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
提前致谢。