unknownUser17's avatar

Laravel Multiple Upload Not Saved to Database

I want to upload documents/attachments for each product and store them in the public folder, where the documents can be pdf, images and csv. I was able to upload multiple files in the public folder but the files' data didn't save into the database.

https://imgur.com/a/FDMQMLS

Model

protected $fillable = [
  'product_id',
  'name',
  'price',
  'file',
  'publish',
];

Controller

public function store(Request $request) {        
    $request->validate([
        'name' => 'required',
        'product_id' => 'required',
        'price' => 'required',
        'file' => 'required',
        'file.*' => 'mimes:jpeg,jpg,png,gif,csv,txt,pdf|max:2048',
        'publish' => 'required',
    ]);

    $fileData = [];
    if($request->hasFile('file')) {
        foreach($request->file('file') as $file) {
            $fileName = time().'_'.$file->getClientOriginalName();
            $file->move(public_path('storage/documents/'), $fileName);
            $fileData[] = $fileName;
        }
    }

    $doc = new Document();
    $doc->name = $request->name;
    $doc->product_id = $request->product_id;;
    $doc->price = $request->price;
    $doc->file = json_encode($fileData);
    $doc->publish = $request->publish;

    dd($doc);

    $doc->save();
    
    return redirect()->route('product.index');
}

Blade View

<form method="POST" action="{{route('document.store')}}" enctype="multipart/form-data">
@csrf
...
<div class="form-group">
    <label>Document</label>
    <div class="input-group-append">
        <label for="upload_file" class="btn btn-info">Upload</label>
        <input id="upload_file" type="file" name="file[]" multiple>
    </div>
    <div id="document"></div>
</div>
</form>
0 likes
4 replies
maclervil's avatar

It return any error ? Can you share detail more about your problem.

unknownUser17's avatar

It returns nothing, it just refreshes the page instead of redirect to the route I stated.

Please or to participate in this conversation.