.php中的ErrorException - 响应返回空白

时间:2017-08-01 16:48:46

标签: php angularjs json laravel-5

我正在使用一个应用程序,它在angularjs上有前端,并使用laravel 5作为后端。我试图上传文件,但在控制台中,响应是一个空白区域。

这是处理文件的角度控制器

    vm.makeFile = function(newFile){
        vm.shipmentObject.files=[];
        vm.newDateFile= new Date();
        vm.newDateFile = $filter('date')(vm.newDateFile, "yyyy-MM-dd h:mm:ss");
        vm.shipmentObject.files.push({
            "id":23,
            "shipment_id":43,
            "user_id":20,
            "date":vm.newDateFile,
            "file": "vm.shipmentObject.file",
            "fileName":"aguacate",
            "fileType":"jpg",
            "status":"I"
        });

        ShipmentResource.insertFile({files:vm.shipmentObject.files}).success(function(response){
            console.log(response);
            console.log("FILE INSERTED CORRECTLY");
        });

            console.log(vm.shipmentObject.files);
    };

这是laravel中的控制器,用于处理文件

 public function makeFile(Request $request)
    {
        if(isset($request->files) && is_array($request->files)){
            $fileArray=[];
            foreach($request->files as $key=>$fileEntity){
                $file= new File();
                $file->file=$fileEntity['file'];
                $file->shipment_id=$fileEntity['shipment_id'];
                $file->user_id=$fileEntity['user_id'];
                $file->date=date('Y,m,d,G,i,s');
                $file->fileName=$fileEntity['fileName'];
                $file->fileType=$fileEntity['fileType'];
                $file->status=$fileEntity['status'];
                $file->save();

                array_push($fileArray, $file);
            }

        }
  return response()->json();
    }

通过这种方式,控制台日志将在浏览器中打印:

enter image description here

BLANK响应, 在laravel控制器的最后,如果我改变这个

  

返回响应() - > json()

这个

  

return response() - > json($ fileArray)

响应是500错误

  

ShipmentController.php第132行中的ErrorException:未定义的变量:   ShipmentController.php第132行中的fileArray   HandleExceptions-> handleError('8','Undefined variable:fileArray',   'C:\ XAMPP \ htdocs中\ zignyWS \应用\ HTTP \控制器\ ShipmentController.php',   ShipmentController.php中的'132',array('request'=> object(Request)))   第132行

线132是这一个 - > return response() - > json($ fileArray)

我不知道问题出在哪里,可能是因为发送请求的方式? enter image description here

我认为问题出在后端......

我陷入困境,之后我需要在应用程序中显示该文件,如果它是一个pdf并添加验证仅用于上传xls,pdf和doc文件。但请首先帮助我解决此空白响应问题< / p>

更新

  

不推荐使用success方法。我建议将它改为then()。 - Mike Feltman

现在改变了。看起来像这样

    ShipmentResource.insertFile({files:vm.shipmentObject.fil‌​es}) 
      .then(function(response){
        console.log(response);
        console.log("FILE INSERTED CORRECTLY");
        console.log(response);
        console.log(vm.shipmentObject.files); 
    }, function(err){ 
        console.log(err);
    });
    vm.shipmentObject.newFile="";
    console.log(vm.shipmentObject.files);
};

2 个答案:

答案 0 :(得分:0)

我认为服务器端的数组声明不正确。我认为它应该是$fileArray=array();

答案 1 :(得分:0)

我发现了错误。正如我在想的那样,它在服务器端。 fileArray的声明是错位的,放置它的正确位置,是在第一个IF之前。喜欢这个

public function makeFile(Request $request)
    {
        $fileArray = [];
    if (isset($request->files) && is_array($request->files)) {
        foreach ($request->files as $key => $fileEntity) {
            $file= new File();
            $file->file=$fileEntity['file'];
            $file->shipment_id=$fileEntity['shipment_id'];
            $file->user_id=$fileEntity['user_id'];
            $file->date=date('Y,m,d,G,i,s');
            $file->fileName=$fileEntity['fileName'];
            $file->fileType=$fileEntity['fileType'];
            $file->status=$fileEntity['status'];
            $file->save();

            $fileArray[] = $file;
        }
    }
    return response()->json($fileArray);
    }