【问题标题】:Laravel 8: AJAX Upload files using onchangeLaravel 8:AJAX 使用 onchange 上传文件
【发布时间】:2021-09-13 14:19:37
【问题描述】:

我想在 laravel 8 中使用 onchange 上传多个文件。是否可以仅通过 onchange 上传?我有这个 html 表单。我希望你们能帮助我。谢谢

<form method="POST" enctype="multipart/form-data" id="upload_form">
 @csrf
    <input type="file" name="file[]" id="file" multiple  >
</form>      

这是我的 Jquery 和 Ajax 脚本。

<script>
function uploadfile(){
    
    var formData = new FormData($('#upload_form')[0]);
    

    $.ajaxSetup({
    headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
    });

    $.ajax({
      type:'POST',
      url: "{{ route('dropzone-action') }}",
       data: formData,
       contentType: false,
       processData: false,
       success: (response) => {
         if (response) {
           this.reset();
           alert('Image has been uploaded successfully');
         }
   

       },
       error: function(response){
          console.log(response);
            $('#image-input-error').text(response.responseJSON.errors.file);
       }
   });

}

这是我的控制器

function action(Request $request){
$request->validate([
    'file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);
if($request->hasFile('file')){
    foreach($request->file as $file) {
        $completeFileName = $file->getClientOriginalName();
        $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME);
        $extension = $file->getClientOriginalExtension();
        $file->storeAs('uploads', $completeFileName);
    }
}
    return response()->json('Image uploaded successfully');

}

【问题讨论】:

  • 控制台错误为422 (Unprocessable Entity)

标签: javascript jquery ajax laravel laravel-8


【解决方案1】:

你可以调用change方法

$("#file").change(function() {
     uploadfile();
});

并在验证中

$request->validate([
    'file.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

在控制器中

function action(Request $request){
$request->validate([
    'file.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    foreach($request->file as $file) {
        if($file!=null){
           $completeFileName = $file->getClientOriginalName();
           $fileNameOnly = pathinfo($completeFileName, PATHINFO_FILENAME);
           $extension = $file->getClientOriginalExtension();
           $file->storeAs('uploads', $completeFileName);
    }
}

    return response()->json('Image uploaded successfully');
}

【讨论】:

  • 感谢先生给我一个想法,但它并没有解决我的问题
  • @PaulIversonCortez 你能解释一下你到底在寻找什么吗?我的答案会在更改时上传图片
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 2016-04-18
  • 1970-01-01
  • 2017-08-02
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多