0

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 中继续工作?在他处理上传后将文件名保存在实体中?

4

1 回答 1

1

正如他们在文档中所说:handleFileUpload 不会返回,因为响应是由 BlueImp 的 UploadHandler 类在原生 PHP 中生成的handleFileUpload最后有exit(0);,所以当你调用它时,整个过程就会停在那里。如果您想将文件保存到数据库,您应该在处理请求的操作中执行此操作(来自文档的示例它将是editAction),并且再次如文档所述,使用 getFiles 获取文件名列表并将其镜像到您的数据库中,如您所见适合

于 2013-09-19T11:07:54.680 回答