【发布时间】:2017-08-01 16:48:46
【问题描述】:
我正在一个应用程序中工作,它的前端是 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();
}
这样,控制台日志在浏览器中打印:
空白回复, 如果我改变这个,在 laravel 控制器的末尾
返回响应()->json()
为此
返回响应()->json($fileArray)
响应是 500 错误
ShipmentController.php 第 132 行中的 ErrorException:未定义变量: ShipmentController.php 第 132 行中的 fileArray HandleExceptions->handleError('8', '未定义变量: fileArray', 'C:\xampp\htdocs\zignyWS\app\Http\Controllers\ShipmentController.php', ShipmentController.php 中的“132”,数组(“请求”=> 对象(请求))) 第 132 行
第 132 行是这一行 -> return response()->json($fileArray)
我认为问题出在后端......
我陷入了困境,之后我需要在应用程序中显示该文件(如果它是 pdf)并添加验证以仅上传 xls、pdf 和 doc 文件。但请先帮我解决这个空白响应问题
更新
不推荐使用成功方法。我建议将其更改为 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);
};
【问题讨论】:
-
成功方法已弃用。我建议将其更改为 then()。
-
它现在改变了。看起来像这样 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="";控制台.log(vm.shipmentObject.files); };
-
但它一直在 ShipmentController.php 第 132 行返回此错误 ErrorException:未定义变量:fileArray @MikeFeltman
-
是的,这只是一个旁白。错误肯定在服务器端。
-
JPG 文件是二进制格式。如果使用内容类型
application/json,二进制文件将字符串化为空。
标签: php angularjs json laravel-5