Maqsud
Maqsud

Reputation: 827

Unable to upload multiple files in Laravel using jQuery

Environment:


Problem Statement:

Unable to dd code to iterate multiples file upload inside Controller. And dd($files) is returning last uploaded file instead file array or object

$files = $request->file('file');
        
foreach ($files as $file){
    dd($file);
}

Files & Configuration:

upload.blade.php

<form>
    <input name="file[]" class="form-control" type="file" id="file" multiple required>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

<script>
    $("form").submit(function(evt){  
        evt.preventDefault();
        var formData = new FormData($(this)[0]);
    
        $.ajax({
            url: '{{ route('upload') }}',
            type: 'POST',
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            enctype: 'multipart/form-data',
            processData: false,
            success: function (data) {
                console.log(data);
            }
        });
        return false;
    });
</script>

Upvotes: 1

Views: 108

Answers (1)

A.A Noman
A.A Noman

Reputation: 5270

You have to use like this way

Form name should be like below

<form method="post" id="form_submit" enctype="multipart/form-data">
    @csrf
    ....

    <button type="submit" class="btn btn-success"><i class="fas fa-plus fa-xs"></i>Submit</button>

</form>

$(document).ready(function(){
    $('#form_submit').on('submit', function(event){
        event.preventDefault();
        $.ajax({
            url:'{{route('upload')}}',
            method:"POST",
            data:new FormData(this),
            dataType:'JSON',
            contentType: false,
            cache: false,
            processData: false,
            success:function(data){

            }
        })
    })
})

Upvotes: 1

Related Questions