1. php 验证上传的文件类型为图片,并获得文件的后缀名
以下是我上传了一个图片后显示的 $_FILES['filename']的信息
[filename] => Array
(
[name] => Winter.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php2jw7QX
[error] => 0
[size] => 105542
)
其中type是文件类型的minitype 表示方法,例如普通的HTML的类型是text/html
如果你想用扩展名的方式判断的话可以用以下代码:
<?php
#允许的文件扩展名
$allowed_types = array('jpg', 'gif', 'png');
$filename = $_FILES['filename']['name'];
#正则表达式匹配出上传文件的扩展名
preg_match('|\.(\w+)$|', $filename, $ext);
#print_r($ext);
#转化成小写
$ext = strtolower($ext[1]);
#判断是否在被允许的扩展名里
if(!in_array($ext, $allowed_types)){
die('不被允许的文件类型');
}
?>
2. HTML PHP 中要判断 $_FILES['file']['type'] 为 image 的话则显示预览图片
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")){ //如果文件类型为gif、jpeg、pjpeg的话
?>
在这里写上显示图片的代码
<?php }?>
3. Php里面判断一个文件是不是一个真正的图片
好像有一个函数getimagesize,他可以返回指定文件的信息,如果是一张图片他会返回一个数组,可以查一下手册
4. php怎么判断一个url是不是图片
可以分析HTTP头信息中的Content-Type。
php有获取头信息的函数get_headers():
//$url为图片地址
$header=get_headers($url,1);
//$headers['Content-Type']是URL的类型
$type=explode('/',$headers['Content-Type']);
if($type[0]==='image'){
//这是一个图片
}
else{
//这不是一个图片
}
关于get_headers()的具体信息,可以参见:
PHP手册:get_headers():http://php.net/manual/zh/function.get-headers.php
如果要写成一个函数,就是:
functionis_image($url){
$header=get_headers($url,1);
$type=explode('/',$headers['Content-Type']);
if($type[0]==='image'){
//这是一个图片
returnTRUE;
}
else{
//这不是一个图片
returnFALSE;
}
}
这样就可以了。