Как проверить, является ли файл образным?

Можно ли проверить, является ли определенный файл изображением? Как это можно сделать в PHP?

Если файл не является изображением, я хочу сообщить предупреждение.

Ответ 1

В дополнение к getimagesize() вы можете использовать exif_imagetype()

exif_imagetype() считывает первые байты изображения и проверяет его подпись.

Когда будет найдена правильная сигнатура, будет возвращено соответствующее постоянное значение, иначе возвращаемое значение будет FALSE. Возвращаемое значение - это то же значение, которое getimagesize() возвращает в индексе 2, но exif_imagetype() выполняется намного быстрее.

Для обеих функций возвращается FALSE, если файл не определяется как изображение.

Ответ 2

в PHP вы можете сделать это следующим образом

if ((($_FILES['profile_picture']['type'] == 'image/gif') || ($_FILES['profile_picture']['type'] == 'image/jpeg') || ($_FILES['profile_picture']['type'] == 'image/png')))

в Javascript Вы можете сделать это следующим образом

function checkFile() {
   var filename = document.getElementById("upload_file").value;
   var ext = getExt(filename);
 //  alert(filename.files[0].filesize);
  // alert(ext);
   if(ext == "gif" || ext == "jpg" || ext=="png")
      return true;
   alert("Please upload .gif, .jpg and .png files only.");
   document.getElementById("upload_file").value='';
   return false;
}

function getExt(filename) {
   var dot_pos = filename.lastIndexOf(".");
   if(dot_pos == -1)
      return "";
   return filename.substr(dot_pos+1).toLowerCase();
}

Ответ 4

Я бы сделал это, чтобы узнать...

$type =array('jpg','gif');

foreach($type as $val){

if($_FILES['filename']['type'] == 'image/$val')
{
echo "its an image file";
}
else{
echo "invalid image file"
}

Ответ 5

Лучше и быстрее использовать exif_imagetype(). Что-то вроде этого должно выполнить работу:

$valid_formats = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);
$file_format = exif_imagetype($filename);

if(!in_array($file_format, $valid_formats))
    echo("File format is not valid");