2015-11-24 57 views
0

我正在制作应用移动设备,并且需要通过我的API从我的相机上传照片。但是当学说尝试到INSERT INTO时,他并不高兴,因为我的name字段是null。所以我的实体生成的名字缺失。无形式上传照片(API)

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

我的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还有图像,从而使问题不会从我来应用移动。新的UploadedFile();是正确的方式?无形式上传。

+0

你可以尝试看看这个[问题](http://stackoverflow.com/questions/ 4083702 /张贴-A-文件和 - 数据 - 宁静Web网页-AS-JSON)。它提供了一个简短的好答案。 –

回答

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'));