Можно ли проверить, является ли определенный файл изображением? Как это можно сделать в PHP?
Если файл не является изображением, я хочу сообщить предупреждение.
Можно ли проверить, является ли определенный файл изображением? Как это можно сделать в PHP?
Если файл не является изображением, я хочу сообщить предупреждение.
В дополнение к getimagesize()
вы можете использовать exif_imagetype()
exif_imagetype() считывает первые байты изображения и проверяет его подпись.
Когда будет найдена правильная сигнатура, будет возвращено соответствующее постоянное значение, иначе возвращаемое значение будет FALSE. Возвращаемое значение - это то же значение, которое getimagesize() возвращает в индексе 2, но exif_imagetype() выполняется намного быстрее.
Для обеих функций возвращается FALSE, если файл не определяется как изображение.
в 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();
}
В php
мы можем использовать filetype ( string $filename )
и mime_content_type ( string $filename )
но mime_content_type ( string $filename )
есть deprecated
http://php.net/manual/en/function.filetype.php
В javascript
мы можем использовать пользовательские функции
http://my-sliit.blogspot.in/2009/04/how-to-check-upload-file-extension.html
Я бы сделал это, чтобы узнать...
$type =array('jpg','gif');
foreach($type as $val){
if($_FILES['filename']['type'] == 'image/$val')
{
echo "its an image file";
}
else{
echo "invalid image file"
}
Лучше и быстрее использовать 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");