Laravel 5.8 ajaxupload POST 419 (неизвестный статус) - PullRequest
1 голос
/ 17 июня 2019

У меня проблема.Я хочу загрузить img, используя ajaxupload, но я не могу этого сделать, я всегда получаю исключение POST 419 (неизвестный статус).Я делаю все с использованием документации, но я понятия не имею.

Итак, мой маршрут:

Route::post('/products/image','ProductController@image');

В основных макетах у меня есть:

<meta name="csrf-token" content="{{ csrf_token() }}">

Мой form.blade.php

 <form action="{{route('')}}" method="post">
 @csrf
 <div class="box box-danger box-solid file-upload">
    <div class="box-body">
       <div id="single" class="btn btn-success" 
        data-url="products/image" data-name="single">
           Chose
        </div>
        <div class="single"></div>

И мой app.js:

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


  if($('div').is('#single')){
        var buttonSingle = $("#single"),
        buttonMulti = $("#multi"),
        file;
    }

   if(buttonSingle){
     new AjaxUpload(buttonSingle, {
     action: '/admin/' + buttonSingle.data('url') + "?upload=1",
     data: {name: buttonSingle.data('name')},
     name: buttonSingle.data('name'),

     onSubmit: function(file, ext){
        if (! (ext && /^(jpg|png|jpeg|gif)$/i.test(ext))){
            alert('Exception');
            return false;
        }

      buttonSingle.closest('.file-upload').find('.overlay').css({'display':'block'});

    },

     onComplete: function(file, response){
        $res = JSON.parse(response);
        if($res['error']){
            alert($res['error']);
            buttonSingle.closest('.file-upload').find('.overlay').css({'display': 'none'});
            return false;
        }
        setTimeout(function(){
            buttonSingle.closest('.file-upload').find('.overlay').css({'display':'none'});

            response = JSON.parse(response);
            $('.' + buttonSingle.data('name')).html('<img src="/images/' + response.file + '" style="max-height: 150px;">');
        }, 1000);
    }
});

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

У меня была точно такая же проблема с загрузкой Dropzone Пожалуйста, не забудьте добавить enctype = "multipart / form-data" в качестве атрибута формы И попробуйте отправить эти данные токена вот так

data: {
   _token: $('meta[name="csrf-token"]').attr('content'),
   name: buttonSingle.data('name')
},
0 голосов
/ 18 июня 2019

У вас должно быть что-то подобное в разделе заголовка

<meta name="_token" content="{{ csrf_token() }}"><meta>

или

<meta name="csrf-token" content="{{ csrf_token() }}">

И это обычный скрипт, который должен загружаться в любой элемент DOM

<script>
    $(function () {
        $.ajaxSetup({
            headers: {'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')}
        });
    });
</script>

Примечание. Используйте правильное имя name = "_ token" или name = "csrf-token"

...