首页 > 解决方案 > 无法使用 ajax 在 Laravel 中发送文件

问题描述

我正在尝试使用和 ajax 调用将文件发送到我的控制器。我经历了很多答案,我想出了这段代码。

 $('#btn_stock_create').on('click',function(){
    var create_stock_type = $('#create_stock_type').val();
    var create_tag_no = $('#create_tag_no').val();
    var formData = new FormData();
    formData.append("file", $("#create_image")[0].files[0]);
    $.ajax({                    
        url: '/stocks/create',
        type: 'POST',     
        data: {
             _token: CSRF_TOKEN,
             create_stock_type:create_stock_type,
             create_tag_no:create_tag_no,
             create_image:formData,
        },
        processData: false,
        contentType: false,
        cache: false,
        dataType: 'json',                   
        success: function (data) { 
           if (data.result == 1) {
                table.ajax.reload();
                swal({
                    title: data.status,
                    text:  data.message,   
                    icon:   "success",
                });
                $('#createModal').modal('hide');
                $('#createModal').find('form').trigger('reset');
            }
        }
    }); 
});

我的表单在引导模式中。我的表格如下:

   <form id="create_stock_form" class="form-horizontal" enctype="multipart/form-data">
       <div class="form-group">
         .... (Rest of the inputs)
      </div>
      <div class="form-group">
         <div class="row">
            <div class="col-md-4">
              <label for="create_image" class="col-md-12 control-label" >Stock Image</label>
              <div class="col-md-12">
               <input type="file" class="form-control-file" id="create_image">
              </div>
            </div>
          </div>
      </div>
  </form>

所以当调用 ajax 时会显示 Handler 异常。

C:..\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php。

谁能告诉我为什么会这样。我似乎无法使用我的 ajax 函数将文件发送到控制器。或者有没有其他解决方案。请帮我。

标签: jquerylaravelfile

解决方案


我希望这有帮助

在您的输入中添加接受属性

<input type="file" class="form-control-file" id="create_image" accept="image/*>

Ajax 提交请求

$('#btn_stock_create').on('click',function(){
   var formData = new FormData($('#create_stock_form').find('#create_image')[0]);
 $.ajax({                    
    url: '/stocks/create',
    type: 'POST',     
    headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' },
    data: formData,
    processData: false,
    contentType: false,
    cache: false,
    dataType: 'json',                   
    success: function (data) { 
       if (data.result == 1) {
            table.ajax.reload();
            swal({
                title: data.status,
                text:  data.message,   
                icon:   "success",
            });
            $('#createModal').modal('hide');
            $('#createModal').find('form').trigger('reset');
        }
    }
  }); 
});

推荐阅读