Laravel AJAX загрузки изображения 'переместить' функция, создающая 500 ошибок
Я пытаюсь загрузить изображение AJAX с помощью Laravel 5.4. Все остальные поля в моей форме работают, кроме move()
функция на входе файла, которая возвращает ошибку 500. Я добавил весь код, связанный с изображением ниже. При нажатии кнопки отправки я делаю e.preventDefault()
а затем запуск функции AJAX.
HTML
{!! Form::open(['action' => 'ProjectController@store','id' => 'createForm','files' => true]) !!}
<div class="form-group">
{!! Form::label('image', 'Project Image') !!}
{!! Form::file('image') !!}
</div>
{!! Form::submit('Create', ['id' => 'createSubmit', 'class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
AJAX
var formData = new FormData($('#formElem'));
$.ajax({
url: '{{ route('project.store') }}',
type: 'post',
contentType: false,
processData: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: formData,
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
console.log(data);
}
});
PHP
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
$image_filename = 'feature-' . $image['name'];
// THIS LINE CAUSES THE 500 ERROR
// $image->move(public_path('uploads'), $image_filename);
}
VAR_DUMP OF $ _FILES ['изображение']
array(5) {
["name"]=>
string(12) "Homepage.png"
["type"]=>
string(9) "image/png"
["tmp_name"]=>
string(23) "C:\xampp\tmp\php7AD.tmp"
["error"]=>
int(0)
["size"]=>
int(251159)
}
Папка для загрузки существует.
2 ответа
Попробуйте загрузить изображение так:
$destinationPath = 'path/th/save/file/';
$image = $request->file('image');
$name = $user_meta['image_org_name'] = $image->getClientOriginalName();
$extension = $image->getClientOriginalExtension();
$file_name = md5(uniqid().time()).'_'.$user_meta['image_org_name'];
$image->move($destinationPath,$file_name);
Какую ошибку вы получаете, возможно, это связано с разрешением папки "uploads"?
Проверьте подробности 500 ошибок в журналах Laravel.
Вы также можете проверить подробности ошибки в Chrome Dev. Перейдите на вкладку "Сеть", отфильтруйте по "XHR", нажмите на ошибку 500, которая должна быть выделена красным, а в верхнем меню перейдите на вкладку "Предварительный просмотр". Это должно дать вам подробную ошибку сервера.