Когда я отправляю больший файл с AJAX jQuery на контроллер Laravel 5, он получает пустые данные - PullRequest
0 голосов
/ 04 января 2019

Когда я пытаюсь загрузить файл изображения с помощью jQuery ajax-запроса в контроллер Laravel, вывод в контроллере будет пустым. Но когда я загружаю файл небольшого размера, он может получить доступ, но не к большему. (Я использую Laravel версии 5.7. *)

Примечание. Я обновил свой файл php.ini для ограничения загрузки файлов и ограничения после загрузки до 50M. Даже если это создает ту же проблему.

Я обновил свой файл php.ini для лимитов загрузки файлов и лимитов отправки сообщений до 50M. Даже если это создает ту же проблему.

$.ajax({
    method: "POST",
    url: 'photo-upload',
    data: formData, // I had appended all the data to this FormData();
    success: function(result){
           swal("Success","Uploaded Successfully","success");
    },
    cache: false,
    contentType: false,
    processData: false
});

// Внутренний контроллер

$photo = Input::file('photo'); // It's giving empty result with larger file

1 Ответ

0 голосов
/ 05 января 2019

Попробуйте с этим:

$.ajax({
     url: "photo-upload",
     method:"POST",
     data: new FormData(this),
     // IF YOU WANT TO USE PROGRESS
     xhr: function() {
          var myXhr = $.ajaxSettings.xhr();
          if(myXhr.upload){
              // FUNCTIONS 
              myXhr.upload.addEventListener('progress', progress, false);
              myXhr.addEventListener("load", complete, false);
              myXhr.addEventListener("error", error, false);
              myXhr.addEventListener("abort", abort, false);
          }
          return myXhr;
      },
     dataType:'JSON',
     contentType: false,
     cache: false,
     processData: false,
     // IF SUCCESS
     success:function(data)
     {
        console.log(data);
     }
  });

2 - В вашем контроллере:

protected function upload(Request $request) {
    // UPLOAD YOUR FILE HERE & INSERT DATA TO DATABASE
    $path = Storage::putFile('files', $request->file('photo')); // UPLOAD AND GET PATH

    // RETURN JSON DATA
    return response()->json([
           'file' => $path
    ]);
}

, если вы хотите использовать прогресс или любое сообщение во время загрузки , это поможет:

function progress(event){
  var percent = (event.loaded / event.total) * 100;
  var num = Math.round(percent);
  // SET THIS TO ANY DIV WITH JQUERY
}

function completeHandlerHome(event){
  // IF UPLOAD COMPLETED
}

function errorHandlerHome(event){
  // IF IS ERROR
}

function abortHandlerHome(event){
  // IF IS ABORTED
}

Это работа для меня :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...