проблема в том, что вроде бы файл фотографии я получаю если протестировать, но при выполнении Fetch запроса http 500.
JS-ка с самим fetch'ем. Попробовать убрать индекс у files не предлагайте, тоже пробовал суть не меняет проблемы
$('.upload-files').on( 'click', function( event ){
event.stopPropagation(); // остановка всех текущих JS событий
event.preventDefault(); // остановка дефолтного события для текущего элемента - клик для <a> тега
console.log("хай");
var fileData = document.getElementById('avatar-upload').files;
console.log(fileData);
// ничего не делаем если files пустой
if( typeof fileData == 'undefined' ){
console.log("тип андефинед");
return true;
}
else{
console.log("всё супер");
}
let files = Array.from(fileData);
let file = files[0];
console.log(file);
// Fetch запрос
fetch('/api/profile.settings', {
method: 'POST',
enctype: 'multipart/form-data',
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
})
.then(response => response.json()).then(response => {
if(response.status == "No Content"){
$('#bgError').text(response.message)
$('#avatarError').text(response.message)
}else{
$('.avatar-upload').submit();
$('.bg-upload').submit();
}
});
});
HTML-ка сама форма с загрузкой фотографии
<form action="" name="avatar" method="get" enctype="multipart/form-data">
@csrf
<br>
<input type="file" name="image" id="avatar-upload" required>
<button class="upload-files">Загрузить</button>
</form>
Controller осуществляющий логику. С контроллером проблем точно не может быть ибо естественно перед написанием fetch запроса я протестил его не раз
public function UploadImage(Request $request)
{
$path = $request->file('image')->store("app/public","public");
$id = Auth::user()->id;
$uri = $request->getRequestUri();
if ($uri == "/avatar.upload"){
User::where('id',$id)->update(['url_to_img' => "/storage/{$path}"]);
return response()->json(["message" => "Аватар изменён", 'status' => 'ok'])->setStatusCode(200);
}
else if($uri == "/bg.upload"){
User::where('id',$id)->update(['url_to_bg' => "/storage/{$path}"]);
return response()->json(["message" => "Фон изменён", 'status' => 'ok'])->setStatusCode(200);
}
else{
return response()->json(["message" => "Фотография не загружена", 'status' => 'No Content'])->setStatusCode(204);
}
return redirect(route("settings"));
}