Search code examples
phplaravellaravel-8laravel-9

How to return file image name in database after upload in Laravel 9?


The image uploads fine, it moves to the required folder, but the path name is not being returned into my database, it stays null

Posts Controller

if($request->hasFile('image')) {
        $fileName = $request->file('image');
        $file_name = $fileName->getClientOriginalName();
        $formFields['image'] = $request->file('image')->store('img','public');
    }

Posts::create([
        'title' => $request->post('title'),
        'sub_title' => $request->post('sub_title'),
        'tags' => $request->post('tags'),
        'content' => $request->post('content'),
        'featured' => ($request->has('featured')) ? true : false,
    ]);

Image upload input

<div class="mb-2">
 <label for="image" class="mb-1">Image</label>
  <input type="file" class="w-100" name="image">
   @error('image')
    <p class="mt-1 text-danger">{{ $message }}</p>
   @enderror
</div>

Solution

  • You must add filename field in your table, the file moves to the required folder but after that you must assign the filename in a filed in Posts table like this :

    Posts::create([
        'title' => $request->post('title'),
        'sub_title' => $request->post('sub_title'),
        'tags' => $request->post('tags'),
        'content' => $request->post('content'),
        'featured' => ($request->has('featured')) ? true : false,
        'filename' => $file_name   // add this line
    ]);