Как проверить, загружен ли файл с файлом исключительно изображение, а не видеофайл и что-нибудь еще?Как определить, не загружен ли загруженный файл?
Я проверил простой код, который будет проверять, является ли загруженный файл изображением.
форма
<form method="post" enctype="multipart/form-data">
<input type="file" name="photo" accept="image/*">
<input type="submit" name="submit" value="Test">
</form>
Хотя у меня есть accept="image/*"
, я могу легко изменить его All types
и получить файл без изображения.
код, чтобы проверить, если файл является изображение (Это только для тестирования)
if($_POST['submit']) {
$tmp_file = $_FILES['photo']['tmp_name'];
if(mime_content_type($tmp_file)) {
var_dump(mime_content_type($tmp_file));
} else {
echo 'error1';
}
if(getimagesize($tmp_file)) {
var_dump(getimagesize($tmp_file));
} else {
echo 'error2';
}
}
В настоящее время у меня есть 3 теста на это, 2 прошло 1 не удалось:
- Тестирование изображения = прошло.
- Тестирование без изображения действует .srt файл = принят (выдает ошибку в
getimagesize
) - Testing действительный видеофайл .mp4 = не удалось (после представления, она ЗАГРУЗКА на 5-10 секунд и не дает ошибок)
Что мне нужно для этого? Я не знаю, в чем проблема, потому что она не дает никаких результатов как от var_dump()
, так и от echo 'errors'
. Теперь я думаю, что PHP принимает этот файл.
Примечание
мне нужно сделать это так, что только действительное изображение будет загружено.
Примечание 2
Принятый ответ на маркированной вопросе не работает со мной.
Update
Если я пытаюсь загрузить видео, которое меньше 128M она возвращает что-то. Но если он больше 128M, он ничего не получает в моем localhost
, но я тестировал его на рабочем сайте, он дает мне REQUEST TIME OUT
.
файл изображения имеет ограниченное расширение, как .jpg, .jpeg, .png, .gif и т.д. Вы можете проверить их –
это не безопасно полагаться на расширение, что пользователь данного. –