我将 SonataMediaBundle 与 SonataAdminBundle 和 Symfony 2.3 一起使用。
当我尝试通过 Sonata 管理界面上传图像时:
- 点击“添加新”(
app_dev.php/admin/sonata/media/media/create
) - 点击“图片”(
app_dev.php/admin/sonata/media/media/create?provider=sonata.media.provider.image&context=default
) - 浏览
image.jpg
文件并单击“创建” - 这将我带到编辑页面,我可以在其中看到:
Item "image.jpg" has been successfully created.
事实上:
- 在文件夹
web\uploads\media\default\0001\01
中,我有我的图像文件和 3 个拇指 - 在
media__media
数据库表中我有相应的行 - 当我
web/uploads/media/default/0001/01/
使用 Firefox 浏览时,我可以看到我的图像 - 相应的行出现在媒体列表中(在管理面板中)
但是:
- 图像未显示在媒体列表中(有一个正方形而不是拇指),也未显示在图像编辑页面 (
app_dev.php/admin/sonata/media/media/3/edit?provider=sonata.media.provider.image&context=default
)
对于文件,情况更糟:
- 点击“添加新”(
app_dev.php/admin/sonata/media/media/create
) - 点击“图片”(
app_dev.php/admin/sonata/media/media/create?provider=sonata.media.provider.file&context=default
) - 浏览
document.zip
文件并单击“创建”
这会生成错误 500: The file "" does not exist
。并且没有在数据库中创建新行。
解决方案
对于图像问题,我注意到奏鸣曲管理员正在寻找的路径不是好的路径:我在寻找:http://myserver/uploads/media/default/0001/01/c35f187f1b405f4bfba8b962d83e5bbdccff54f9.jpeg
代替http://myserver/myproject/web/uploads/media/default/0001/01/c35f187f1b405f4bfba8b962d83e5bbdccff54f9.jpeg
显然,这是由于 config.yml 的这一部分(在 SonataMedia 文档中定义):
sonata_media
cdn:
server:
path: /uploads/media
我替换为:
sonata_media
cdn:
server:
path: /myproject/web/uploads/media
它有效。但我认为在那里硬编码不是一个好主意。而且我想在奏鸣曲文档中这样写是有充分理由的,不是吗?
我的修改正确吗?如果没有,我该怎么办?
无论如何,它并不能解决我的文件上传问题!关于这一点有什么想法吗?