Делаю загрузку изображения на сервер через Ajax, а php файл проверяет форму на ошибки
сначала объявляю переменную
$ava = "";
Затем пишу функцию проверки файла на существование, размер (МБ) и тип
function can_upload($file){
if(empty($file['tmp_name'])){
echo json_encode(['error' => 'Вы не выбрали файл для загрузки. Загрузите аватарку'], JSON_UNESCAPED_UNICODE);
exit;
}
if($file['size'] > 10485760){
echo json_encode(['error' => 'Аватарка не может быть больше 10 МБ..'], JSON_UNESCAPED_UNICODE);
exit;
}
$ext = pathinfo($_FILES['ava']['name'], PATHINFO_EXTENSION);
$types = array('jpg', 'jpeg', 'heic', 'png', 'bmp', 'JPG', 'JPEG', 'HEIC', 'PNG', 'BMP');
if(!in_array($ext, $types)){
echo json_encode(['error' => 'Разрешено загружать изображения только в форматах [.png, .jpg, .jpeg, .heic, .bmp]'], JSON_UNESCAPED_UNICODE);
exit;
}
return true;
}
Затем пишу функцию загрузки файла
function make_upload($file){
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/user_upload/';
if(!is_dir( $uploaddir)) mkdir($uploaddir, 0777);
$file = base64_decode($_POST['ava']);
$file = explode(',', $file);
$file = base64_decode($file[1]);
$fileName = date('YmdHis').'_'.translit($_FILES['ava']['name']);
if(move_uploaded_file($_FILES['ava']['tmp_name'], $uploaddir.$fileName)){ //пробуем загружать файл на сервер
$href = ""; //переменная для ссылки на загруженный файл
$href = $uploaddir.$fileName; //ссылка на загруженный файл
$ava = $href; //пробую к объявленной переменной присвоить значение переменной $href(ссылку)
} else {
echo json_encode(['error' => "Аватарка не загружена, попытайтесь снова"], JSON_UNESCAPED_UNICODE);
exit;
}
}
Далее выполняем саму загрузку
//пробуем загрузить файл
if(is_uploaded_file($_FILES['ava']['tmp_name'])){ //загружаем
$check = can_upload($_FILES['ava']); // обращаемся к ф-ии проверок
if($check === true){ //если файл проверки прошел
make_upload($_FILES['ava']); //запуск ф-ии загрузки файла
} else{
echo json_encode(['error' => "$check"], JSON_UNESCAPED_UNICODE);
exit;
}
} else {
echo json_encode(['error' => "Аватарка не загружена (без нее профиль никто не будет смотреть)"], JSON_UNESCAPED_UNICODE);
exit;
}
Собственно сделал проверку, где вывожу все НЕ пустые переменные и выводятся все кроме
$ava
. То есть почему-то в ф-ии
make_upload $ava
не принимает значение
$href