Laravel 5.2 загрузка файла ajax не получает файл

68
8

У меня есть приложение Laravel 5.2, где я пытаюсь загрузить некоторые файлы через ajax, но laravel их не получает.

Вот мой код:

function uploadImages(selector){
var file_data = selector.prop('files')[0];
var form_data = new FormData();
form_data.append('file', file_data);
jQuery.ajax({
url: '/uploadfile/',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(php_script_response){
console.log(php_script_response);
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus);
console.log(errorThrown);
}
});
}

Вот часть php:

public function uploadPhoto(Request $request){
$string = str_random(40);
$response = [];

$file = $request->file('file');

$response['str'] = $file;

return response()->json($response);
}

Проблема в том, что $ file имеет NULL. (функция успеха печатает Object { str: "NULL" } для консоли).

Я проверил заголовки, отправленные на вкладку "Сеть" консоли, и кажется, что изображение отправляется как отправленное. Кто-нибудь знает?

ОБНОВИТЬ:

Вот html-форма:

<form action="" method="post" enctype="multipart/form-data">
<input type='file' id='choosePhoto' name='file'>
</form>

спросил(а) 2016-03-23T19:16:00+03:00 4 года, 3 месяца назад
1
Решение
66

Я рекомендую использовать этот плагин jquery: http://malsup.com/jquery/form/#file-upload

Добавьте это на свой js:

    $('#my-form').ajaxForm({

beforeSubmit: function(formData, jqForm, options){
// just like jquery ajax
},

success: function(responseText, statusText, xhr, $form){

console.log(responseText);

},

clearForm: true //clear form after submit
});

Тогда на ваш взгляд:

<form id="my-form" method="POST" action="{{ URL::to('my/route') }}" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*" required>
<input class="subir" type="submit" name="submit" value="Upload">
{{ csrf_field() }}

</form>

ответил(а) 2016-03-24T13:29:00+03:00 4 года, 3 месяца назад
55

Из приведенного выше кода то, что я понял, является проблемой, с которой вы сталкиваетесь, - это не с загрузчиком laravel, а с фрагментом jquery. В jquery вы должны обрабатывать загрузки файлов по-другому. пожалуйста, найдите учебник по созданию фрагмента для загрузки файлов через ajax/jquery здесь

ответил(а) 2016-03-24T07:35:00+03:00 4 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема