Попытка загрузить изображение с помощью jquery

#jquery #laravel

#jquery #laravel

Вопрос:

кто-нибудь может мне помочь? Я пытаюсь загрузить изображение с помощью jquery и laravel, но не знаю, как передать данные

Функция Ajax

 var form_data = new FormData();

form_data.append('file', file_data);
form_data.append('link', link);
form_data.append('comment', comment);
form_data.append('reportid', reportid);

$.ajax({
    url:"{{ route('report.update') }}",
    type:"GET",
    data:form_data,
    contentType:false,
    cache:false,
    processData:false,
    success:function(data) {
        alert(data);
    }
});
  

Маршрут

 Route::get('report-update', ['uses'=>'Executive@reportUpdate', 'as'=>'report.update']);
  

Контроллер:

 public function reportUpdate(Request $request)
{
    $file = $request->file('file');

    echo $file->getClientOriginalName();
}
  

Комментарии:

1. Измените тип GET на POST , а также измените свой Маршрут

2. Во-первых, ваш маршрут неверен, это должен быть POST. И вы не можете напрямую отправить файл через AJAX подобным образом. Что вы можете сделать, это загрузить файл, используя некоторые другие методы, и передать имя или путь к файлу в данных вашей формы.. Вы можете использовать библиотеки, такие как blueimp ( github.com/blueimp/jQuery-File-Upload ) загрузить файл, а затем передать возвращаемые данные файла в AJAX

Ответ №1:

добавьте enctype=»multipart / form-data» в свою форму

 enctype="multipart/form-data"
  
 $.ajax({

    url:"{{ route('report.update') }}",
    type:"POST",
    data:form_data,
    contentType:false,
    processData:false,
    success:function(data){
        alert(data);
    }

});
  
  Route::POST('report-update', ['uses'=>'Executive@reportUpdate', 'as'=>'report.update']);
  

Ответ №2:

просто попробуйте это

 var formData = new FormData($("#formid")[0]);
$.ajax({
   url: "{{ route('report.update') }}",
   type: 'POST',
   dataType: 'JSON',
   data: formData,
   processData: false,
   contentType: false,
   enctype: 'multipart/form-data',
   mimeType: 'multipart/form-data',
   cache: false,
   success: function(data, textStatus, jqXHR) {
       console.log(data)
   }
});
  

и использовать метод form — это POST

Ответ №3:

Ajax

  $("#FormId").on('submit', (function(e) {
        e.preventDefault();
        $.ajax({
            url: "{{ route('report.update') }}",
            type: "POST",
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData: false,
            success: function(data) {
            }


        })
    }));
  

Маршрут

 Route::POST('report-update', ['uses'=>'Executive@reportUpdate', 'as'=>'report.update']);
  

Функция

 public function reportUpdate(Request $request)
{
    $file = $request->file('file');

    $fileName = time().$request->file('file')->getClientOriginalName();
    $path=$file->move('FolderPath',$fileName);
}