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 \Foobar\Entity\Image();
$imageEntity->setImage($imageName);
$imageEntity->setFolder($destinationFolder);
$em->persist($media);
$em->flush();
return true;
}
上面的示例上传了图片。
变量$ imageName触发fileUploadHandler。在某个地方有一个返回,为什么它不会在下一行保存图像名。
我怎样才能让它在Symfony中运行?在处理上传后将文件名保存在实体中?
答案 0 :(得分:1)
正如他们在文档中所说: handleFileUpload DOES NOT RETURN,因为BlueImp的UploadHandler类在本机PHP中生成响应。 handleFileUpload
最后有exit(0);
,因此当您调用它时,整个过程就会停止。如果你想将文件保存到数据库,你应该在处理请求的操作中执行它(从文档的示例中它将是editAction
)然后,再次如文档所述,使用getFiles来获取文件名列表和根据您的需要在您的数据库中镜像。