Reputation: 195
I am trying to upload a file via axios api troughr Laravel. Below is the controller code but I don't understand why Laravel tell me the variable name on line 24 is undefined. It seems to me the variable is defined...
public function store(Request $request)
{
$this->validate($request, [
'image' => 'required'
]);
if($request->get('image'))
{
$image = $request->get('image');
$name = time().'.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
\Image::make($request->get('image'))->save(public_path('images/').$name);
}
$image= new FileUpload();
$image->image_name = $name;
$image->save();
return response()->json(['success' => 'You have successfully uploaded an image'], 200);
}
This is the line 24: $image->image_name = $name;
Upvotes: 1
Views: 885
Reputation: 12188
you have to make your variable in higher visibility scope :
public function store(Request $request)
{
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
$name=''; // here you define your vaiable
if($request->get('image'))
{
$image = $request->get('image');
$name = time().'.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
\Image::make($request->get('image'))->save(public_path('images/').$name);
}
$image= new FileUpload();
$image->image_name = $name;
$image->save();
return response()->json(['success' => 'You have successfully uploaded an image'], 200);
}
more about variable scope in:
https://phppot.com/php/variable-scope-in-php/
Upvotes: 2