есть файл js с ajax запросом, этот запрос должен отправить изображение в php файл, который сохранит это фото в папку media, а название фото сохранит в БД.
php файл changeData.php
function savePhoto($photo) {
$fileSuccess = 'No';
$fileName = $photo['name'];
$fileTmp = $photo['tmp_name'];
$uploadFolder = 'media/';
$moveFile = move_uploaded_file($fileTmp, $uploadFolder . $fileName);
if ($moveFile) {
$fileSuccess = 'photo uploaded successful';
}
$user = R::findOne('users', 'id = ?', array($_SESSION['logged user']->id));
if ($user) {
$user->photo = $fileName;
$_SESSION['logged user'] = $user;
R::store($user);
echo 'success';
}
}
$userPhoto = $_FILES['photo'];
if (isset($userPhoto)) {
savePhoto(($userPhoto));
}
function renderImg(file) {
let reader = new FileReader();
reader.onload = function(e) {
photoPreviewNode.innerHTML = `<img src="${e.target.result}" alt="photo">`
}
reader.onerror = function(e) {
alert('error')
}
reader.readAsDataURL(file.files[0])
}
$('.addPhotoForm').on('submit', function(e) {
e.preventDefault()
let fd = new FormData();
let photo = $('.photoInput')[0].files;
fd.append('photo', photo[0])
$.ajax({
url: 'changeData.php',
method: 'POST',
data: fd,
processData: false,
contentType: false,
success: renderImg(inputPhoto)
}).done(function() {
console.log(1)
alert(1)
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="column">Photo</div>
<form method="POST" enctype="multipart/form-data" class="addPhotoForm column">
<div class="column">
<label for="photoInput">Add photo</label>
<button type="submit" class="button formPhotoFormButton">Change</button>
</div>
<div class="column photoPreview">
<input name="photo" type="file" class="photoInput" id="photoInput" placeholder="add photo" style="display:none">
</div>
</form>
</div>
success: renderImg(inputPhoto)- некорректно........ надо вставлять ссылку на функциюsuccess: renderImgили писать анонимную фунцию........ в целом тема отладки и нахождения ошибок - очень важна для разработчиков, так что срочно изучать – Алексей Шиманский Sep 01 '22 at 09:01