Задать вопрос

Не удаётся получить тип файла в php. Что делать?

По событию ondrop я вызываю функцию (сам ondrop работает верно, поэтому его я не прилагаю):
function upload_file(event) {
event.preventDefault();
file_object = event.dataTransfer.files[0];
ajax_file_upload(file_object, '<?=$_COOKIE['id']?>');
 function ajax_file_upload(file_object, id) {
 if(file_object != undefined) {
 let form_data = new FormData();                 
 form_data.append('file', file_object);
 form_data.append('id', id);
}

Дальше работа с $.ajax, который тоже работает верно.
В самом PHP файле мы получаем массив:
<?php
    $id=$_POST['id'];
    $arr_file_types = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];
    echo $_FILES['file']['type'];

Дальше по коду мы загружаем файл и записываем ссылку на него в БД. Весь код работает верно и загружает картинку, кроме обработки типа файла. Я не могу его сравнить с допустимыми типами, так как не могу получить тип. Если вам нужно больше информации, то я скину больше кода. Подскажите, что не так с моим кодом.
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой 15 комментариев
Пригласить эксперта
Ответы на вопрос 1
Wacdis
@Wacdis
PHP, Python, GO, Rust, NodeJS, SOA/MSA
В данном случае, фильтрация по картинкам. Поэтому, я бы на стороне клиента попытался бы загрузить указанный файл в DOM Image и на onLoad'е получил бы понимание, картинка ли это.

Если же принципиально на сервере, то mime_content_type с $_FILES['file']['tmp_name'], как это уже указывали в ответах.

Если защищаться, то фотку можно проверять либо отдельным изолированным микросервисом, так как это не быстрый процесс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы