上传没有表格的照片(API)

时间:2015-11-24 15:10:35

标签: symfony

我正在制作移动应用,我需要通过我的API从相机上传照片。但是当学说尝试INSERT INTO时,他并不高兴,因为我的name字段是null。因此,我的实体生成的名称丢失了。

我不明白代码块在哪里。我的网络应用程序使用了相同的实体照片,一切正常。

我的Api控制器:

<?php
/**
 * @throws AccessDeniedException
 * @return array
 * @FOSRest\View()
 */
public function apiUploadAction()
{
    $photo = new Photo;
    $photo->setUser($this->getUser());
    $photo->setFile = new UploadedFile(
        $_FILES["file"]["tmp_name"], 
        $_FILES["file"]["name"],
        $_FILES["file"]["type"],
        $_FILES["file"]["size"],
        $_FILES["file"]["error"],
        $test = false
    );

    $em = $this->getDoctrine()->getManager();
    $em->persist($photo);
    $em->flush();

    $apiResponse = array(
        "code"      => true,
        "style"     => "success",
        /*********** SCREENSHOT COMES FROM HERE ***********/
        "message"   => $_FILES["file"]["tmp_name"]."    ".$_FILES["file"]["name"]."    ".$_FILES["file"]["type"]."    ".$_FILES["file"]["size"]."    ".$_FILES["file"]["error"],
    );

    $view = View::create();
    $view->setFormat('json');
    $view->setData($apiResponse);
    return $this->get('fos_rest.view_handler')->handle($view);
}

$ apiResponse.message(截图):

enter image description here

正如你所看到的,symfony有图像所以问题不是来自我的应用程序移动版。 new UploadedFile();是正确的方法吗?无表格上传。

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

替换:

$photo->setFile = new UploadedFile(
        $_FILES["file"]["tmp_name"], 
        $_FILES["file"]["name"],
        $_FILES["file"]["type"],
        $_FILES["file"]["size"],
        $_FILES["file"]["error"],
        $test = false
    );

通过

$photo->setFile($this->getRequest()->files->get('file'));