Symfony PunkAveFileUploaderBundle> handleFileUpload之前的imagename

时间:2013-06-24 12:55:24

标签: symfony

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中运行?在处理上传后将文件名保存在实体中?

1 个答案:

答案 0 :(得分:1)

正如他们在文档中所说: handleFileUpload DOES NOT RETURN,因为BlueImp的UploadHandler类在本机PHP中生成响应。 handleFileUpload最后有exit(0);,因此当您调用它时,整个过程就会停止。如果你想将文件保存到数据库,你应该在处理请求的操作中执行它(从文档的示例中它将是editAction)然后,再次如文档所述,使用getFiles来获取文件名列表和根据您的需要在您的数据库中镜像