//取得上传文件信息
$fileName=$_FILES['file']['name'];
$fileType=$_FILES['file']['type'];
$fileError=$_FILES['file']['error'];
$fileSize=$_FILES['file']['size'];
$tempName=$_FILES['file']['tmp_name'];//临时文件名
//定义上传文件类型
$typeList = array("image/jpeg","image/jpg","image/png","image/gif"); //定义允许的类型
if(!is_uploaded_file($tempName)){
//判断是否是POST上传过来的文件
exit("不是通过HTTP POST方式上传上来的");
}else{
if(!in_array($fileType, $typeList)){
exit("上传的文件不是指定类型");
}else{
if(!getimagesize($tempName)){
//避免用户上传恶意文件,如把病毒文件扩展名改为图片格式
exit("上传的文件不是图片");
}
}
if($fileError>0){
//上传文件错误编号判断
switch ($fileError) {
case 1:
$message="上传的文件超过了php.ini 中 upload_max_filesize 选项限制的值。";
break;
case 2:
$message="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
break;
case 3:
$message="文件只有部分被上传。";
break;
case 4:
$message="没有文件被上传。";
break;
case 6:
$message="找不到临时文件夹。";
break;
case 7:
$message="文件写入失败";
break;
case 8:
$message="由于PHP的扩展程序中断了文件上传";
break;
}
exit("文件上传失败:".$fileError);
}else{
if($fileSize>100000){
//对特定表单的上传文件限制大小
exit("上传文件超出限制大小");
}else{
//避免上传文件的中文名乱码
$fileName=iconv("UTF-8", "GBK", $fileName);//把iconv抓取到的字符编码从utf-8转为gbk输出
if(move_uploaded_file($tempName, "uploads/".$fileName)){
echo "上传文件成功!";
}else{
echo "上传文件失败";
}
}
}
}
?>
复制代码
5、关于php上传文件的一些常用函数:(具体用法就不贴出来了,自己看API文档吧 ^_^)
file_exists 检查文件或目录是否存在
is_uploaded_file 判断文件是否是通过 HTTP POST 上传的
move_uploaded_file 将上传的文件移动到新位置
is_writable 判断给定的文件名是否可写
iconv 字符编码互转
getimagesize 检查是否为图片文件(其他类型的文件就算后缀名改了也能被检测到)
http://www.bkjia.com/PHPjc/854420.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/854420.htmlTechArticlePHP上传原理及操作实现 关于PHP上传文件的函数类库,网上有许多封装很完善,大家直接拿来用就可以。 本文章只是说下关于上传原理和简...