Reputation: 556
I have my APIrest in Laravel 5. I'm trying to upload files. This is my controller :
public function makeFile(Request $request)
{
if(isset($request->files) && is_array($request->files)) {
$fileArray=array();
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($fileArray);
}
(line 132 the one of the error) return response()->json($fileArray);
}
In the frontend (angularjs) when i upload a file it throws this error
ErrorException in ShipmentController.php line 132: Undefined variable: fileArray
Why this is happening?
Upvotes: 0
Views: 1032
Reputation: 94
You declared $fileArray variable inside if statement it works like local variable for this statement.
Solution:
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);
}
Upvotes: 1
Reputation: 5358
You have to declare the $fileArray=array();
outside the first if
. If the first if
doesn't evaluate true, the variable isn't set.
Upvotes: 4