Symfony2 PunkAve FileUpload Bundle可以工作,但由于BlueImp的UploadHandler内部存在返回,因此无法获取文件名。
<?php
/**
*
* @Route("/upload")
* @Template()
*/
public function uploadAction(Request $request)
{
$editId = $this->getRequest()->get('editId');
if (!preg_match('/^d+$/', $editId))
{
throw new Exception("Bad edit id");
}
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('Foobar:Foobar')->find($editId);
$destinationFolder = 'test';
$fileUploader = $this->get('punk_ave.file_uploader');
$imageName = $fileUploader->handleFileUpload(array('folder' => $destinationFolder ));
$imageEntity = new FoobarEntityImage();
$imageEntity->setImage($imageName);
$imageEntity->setFolder($destinationFolder);
$em->persist($media);
$em->flush();
return true;
}
上面的例子上传了图像。
变量$imageName触发fileUploadHandler。有一个返回,为什么它不转到下一行应该保存图像名称的地方。
我怎么还能让它在Symfony工作?在他处理上传后将文件名保存在实体中?
正如他们在文档中所说:handleFileUpload不会返回,因为响应是由BlueImp的UploadHandler类在本机PHP中生成的。handleFileUpload
的末尾有exit(0);
,所以当您调用它时,整个过程就停止在那里。如果您想将文件保存到数据库,您应该在处理请求的操作中执行此操作(从文档的示例来看,它将是editAction
),然后,正如文档所说,使用getFiles获取文件名列表,并在您认为合适的情况下将其镜像到数据库中。