我正在使用一个应用程序,它在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();
}
通过这种方式,控制台日志将在浏览器中打印:
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)
我认为问题出在后端......
我陷入困境,之后我需要在应用程序中显示该文件,如果它是一个pdf并添加验证仅用于上传xls,pdf和doc文件。但请首先帮助我解决此空白响应问题< / p>
不推荐使用success方法。我建议将它改为then()。 - Mike Feltman
现在改变了。看起来像这样
ShipmentResource.insertFile({files:vm.shipmentObject.files})
.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);
};
答案 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);
}