Ajax文件上传在laravel 5.6中不起作用

时间:2018-05-30 08:19:06

标签: php ajax laravel

我正在尝试使用ajax请求在laravel 5.6中上传csv文件。但是,该文件无法上传。它显示,文件一次又一次被要求。

形式

                    <form class="form-horizontal file-upload" method="post" enctype="multipart/form-data">
                        {{ csrf_field() }}
                        <input required="" type="file" name="import_file" id="import_file" />
                        <br>
                        <br>
                        <button class="btn btn-success btn-sm" id="upload_csv" disabled="true" type="submit">Import CSV or Excel File</button>
                    </form>

AJAX

$(document).ready(function(){
        $('form').submit(function(event){

            event.preventDefault();
            var formData = new FormData($('this')[0]);
            $.ajax({
                headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
                url: "{{url('admin/voter/sub/storecsv')}}",
                data: formData,
                type: 'post',
                async: false,
                processData: false,
                contentType: false,
                success:function(response){
                    // console.log(response);
                    alert('uploaded');
                }
            });

        });
    });

控制器

$this->validate($request,[
    'import_file' => 'required',
]);

它显示此导入文件是必需的。我在stackoverflow上经历了许多其他类似的帖子,许多其他成员似乎用相同的代码取得了成功。但是,我找不到我错过的东西。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

改变这个:

var formData = new FormData($('this')[0]);

到此:

var formData = new FormData($(this)[0]);

答案 1 :(得分:0)

使用

var formData = new FormData(this);