在链配置的命名空间异常中找不到Symfony2多文件上载

时间:2014-07-07 14:51:08

标签: php symfony file-upload doctrine-orm

所以我一直在努力让我的网站一次上传多个文件,而且我已经非常接近(我认为),但是我得到以下错误“类'Symfony \ Component \ HttpFoundation \在链配置的命名空间中找不到File \ UploadedFile'“。我认为这是因为我将文件上传为

$data = $form->getData();
$files = $data['file'];

foreach($files as $file)
{
    $photo = new Photo();
    $photo->setFile($file);
    $em->persist($file);
}

而不是将$ photo连接到createFormBuilder,如果这有意义的话。我不知道该怎么做,因为我不想从教义中松开auto_mapping。这里有另一种解决方法,制作学说地图UploadedFile吗?这是我的完整代码

Controller

Entity

Photo Entity YML

2 个答案:

答案 0 :(得分:2)

你不能这样做。 Doctrine试图坚持UploadedFile类,它根本不是实体类。

可能的解决方法:

  • 保存文件名
  • 保存文件内容(BLOB数据)

通常,更简单的方法是仅保存文件名,但是,您还需要移动文件,因为默认情况下文件正在上传到/tmp。如果没有移动它将导致完全丢失文件。

UploadedFile附带了有用的方法move,您可以使用它来实现文件重定位。

另一种解决方案(代码少但复杂得多):

大约一周前,我发布了自己的处理文件上传的包。您可以在此处找到它:https://github.com/jperovic/exploring-fileutility

它通过移动文件并为您提供文件名来解决此问题,以便您可以将其写入数据库

免责声明:我打算用捆绑促销来劫持你的问题。只要说出这个词,我就会将其从答案中删除。

答案 1 :(得分:1)

显然我只是个白痴。花了好几个小时试图弄清楚,只是发现我在做什么

$em->persist($file);

而不是

$em->persist($photo);

我的不好