我可以检查某个文件是否是图像吗?怎么能在PHP中做到这一点?
如果文件不是图像,我想发出警告信息。
答案 0 :(得分:5)
除getimagesize()
外,您还可以使用exif_imagetype()
exif_imagetype()读取图像的第一个字节并检查其签名。
当找到正确的签名时,将返回适当的常量值,否则返回值为FALSE。返回值与getimagesize()在索引2中返回的值相同,但exif_imagetype()更快。
对于这两个函数,如果文件未确定为图像,则返回FALSE。
答案 1 :(得分:1)
在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();
}
答案 2 :(得分:1)
在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
答案 3 :(得分:0)
我会这样做才能找到......
$type =array('jpg','gif');
foreach($type as $val){
if($_FILES['filename']['type'] == 'image/$val')
{
echo "its an image file";
}
else{
echo "invalid image file"
}
答案 4 :(得分:0)
更好更快的方法是使用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");