首页 > 解决方案 > 如何在 Laravel 中使用 Ajax 上传文件我收到错误 419(未知状态)

问题描述

如何在 Laravel 中使用 Ajax 上传文件我收到错误 419(未知状态)。1.Javascript代码。2.控制器代码。3.路由器代码。

Javascript代码

$("#front_image").change(function() {
  let photo = document.getElementById("front_image").files[0];
  let formData = new FormData();
  formData.append("photo", photo);
  formData.append("names",'ABC');

  $.ajax({
      type: "POST",
      url:'/up',
      data:{"_token": $('meta[name="csrf-token"]').attr('content'),"formdata":formData},
      cache:false,
      contentType: false,
      processData: false,
      success:function(data){
          console.log("success");
         console.log(data);
      },
      error: function(data){
          console.log("error");
          console.log(data);
      }
  });
});

控制器代码

public function Image(Request $request) {
  return $request->get('names');
}

路由器代码

Route::POST('/up', 'Controller@Image')

标签: javascriptphpajaxlaravel

解决方案


尝试像这样添加CSRF-Token到您的header

$("#front_image").change(function() {
  let photo = document.getElementById("front_image").files[0];
  let formData = new FormData();
  formData.append("photo", photo);
  formData.append("names",'ABC');

  $.ajax({
    headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
    type: "POST",
    url: '/up',
    data: formData,
    cache: false,
    contentType: false,
    processData: false,
    success: function(data){
      console.log("success");
      console.log(data);
    },
    error: function(data){
      console.log("error");
      console.log(data);
    }
  });
});

此外,我更愿意添加formData上面这个例子。所以你可以access像在控制器中那样做。


推荐阅读