I am creating a media API for the first time creating an API.
I have this code:
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\UploadRequest $request
* @return \Illuminate\Http\Response
*/
public function store(UploadRequest $request)
{
if(!$request->hasFile('fileName')) {
return response()->json(['upload_file_not_found'], 400);
}
$file = $request->file('fileName');
if(!$file->isValid()) {
return response()->json(['invalid_file_upload'], 400);
}
if($request->hasfile('fileName'))
{
$media = new Media();
$data = array();
foreach($request->file('fileName') as $image)
{
$rdm = uniqid(5);
$name= $rdm .'-'.$image->getClientOriginalName();
$image->move(public_path().'/images/', $name);
$data[] = $name;
}
$media->fileName = json_encode($data);
$media->clientId = $request->clientId;
$media->uploadedBy = Auth::user()->id;
$media->save();
}
return ["success" => "Your media file has been successfully uploaded"];
}
Please can you help me why it doesn't upload the images into the public path. It also doesn't store anything in the database. I get a 200 code from postman when sending my POST request, however the database has an empty array as the fileName?
**** EDIT ****
I am uploading multiple images. There isnt a form for this as i am making an api for a mobile app. The request is a POST request to URL /api/v1/media
public/imagesdirectory permission. This should be writable directory.