Laravel не принимает multipart / form-data - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь загрузить свой файл, используя ajax, и у меня уже есть мой токен @csrf в моей форме, но кажется, что Laravel не принимает 'multipart/form-data' я получаю:

CSRF token mismatch.

это мой код:

    var selectedFile = null;
var data = new FormData();

if(selectedFile !== null)
    data.append('image', selectedFile, selectedFile.name)

 $($(form).serializeArray()).each(function(i, field){ 
    data.append(field.name, field.value);
});



$.ajax({
    url: $(form).attr('action'),
    data: data,
    dataType: 'JSON',
    cache: false,
    contentType: 'multipart/form-data', 
    processData: false,
    method: 'POST',
    success: function(data){
        alert(data.success);
    }
});

1 Ответ

0 голосов
/ 17 апреля 2020

Похоже, вам не хватает X-CSRF-Token. Попробуйте добавить это до вызова AJAX.

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

$.ajax({
    url: $(form).attr('action'),
    data: data,
    dataType: 'JSON',
    cache: false,
    contentType: 'multipart/form-data', 
    processData: false,
    method: 'POST',
    success: function(data){
        alert(data.success);
    }
});

Кроме того, убедитесь, что вы храните токен в метатеге HTML

<meta name="csrf-token" content="{{ csrf_token() }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...