PHP 文件上传处理函数
2013-10-30 15:08
597 查看
<?php /** * 文件上传处理函数 * @param array $upfile, 表示上传文件信息,如$_FILES['pic']; * @param string $path, 表示储存上传文件目录路径; * @param array $typelist 表示允许上传的文件类型;默认为array()表示不限制 如图片类型限制: $typelist=array("image/jpeg","image/gif","image/png"); * @param int $maxsize, 表示允许上传文件的大小,默认为0, 表示不限制 * @return 若成功返回上传成功的文件名,失败则返回布尔值false. */ function doUpload($upfile,$path,$typelist=array(),$maxsize=0){ //判断path是否有效 if(!file_exists($path) || !is_dir($path)){ return false; // } //1.判断文件上传是否成功 if($upfile['error']>0){ /* switch($upfile['error']){ case 1: $info="上传的文件超过了 php.ini 中"; break; case 2: $info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE "; break; case 3: $info="文件只有部分被上传"; break; case 4: $info="没有文件被上传"; break; case 6: $info="找不到临时文件夹"; break; case 7: $info="文件写入失败"; break; default: $info="未知错误!"; }*/ return false; } //2. 过滤文件的类型 if(!empty($typelist) && count($typelist)>0){ //判断当前上传文件类型是否不在数组typelist中 if(!in_array($upfile['type'],$typelist)){ //exit("上传文件类型错误!".$upfile['type']); return false; } } //4. 上传文件大小的过滤(对当前上传文件大小的验证) if($maxsize>0){ if($upfile[size]>$maxsize){ return false;//exit("文件大小超出!"); } } //5. 对上传文件的文件名的处理 $ext = pathinfo($upfile['name'],PATHINFO_EXTENSION); //获取上传文件的后缀名 //随机一个文件名 do{ $newfile = date("YmdHis").rand(1000,9999).".".$ext; }while(file_exists($path."/".$newfile)); //若文件存在,则重新随机 //6. 执行文件上传移动处理 if(is_uploaded_file($upfile['tmp_name'])){ if(move_uploaded_file($upfile['tmp_name'],$path."/".$newfile)){ return $newfile; //上传文件成功 }else{ return false;//echo "上传文件失败!"; } }else{ return false;//echo "不是有效的上传文件!"; } } //图片等比缩放函数 function updateImage($picname,$path,$prix="s_",$maxwidth=100,$maxheight=100){ //1. 定义变量和计算图片信息 //$picname = "38.jpg"; //图片名称 //$path = "./image"; //图片存放路径 //$prix = "d_"; //缩放后的前缀名 //$maxwidth=130; //最大的宽 //$maxheight=130; //最大的高 $info = getimagesize($path."/".$picname); //获取图片文件的属性信息 $width = $info[0]; //原图片的宽度 $height = $info[1]; //原图片的高度 //计算压缩后的尺寸 if(($maxwidth/$width)<($maxheight/$height)){ $w=$maxwidth;//新图片的宽度 $h=($maxwidth/$width)*$height;//新图片的高度 }else{ $h=$maxheight;//新图片的宽度 $w=($maxheight/$height)*$width;//新图片的高度 } //2. 创建图像源 $newim =imagecreateTrueColor($w,$h); //新图片源 //根据原图片类型来创建图片源 switch($info[2]){ case 1: //gif格式 $srcim = imageCreateFromgif($path."/".$picname); break; case 2: //jpeg格式 $srcim = imageCreateFromjpeg($path."/".$picname); break; case 3: //png格式 $srcim = imageCreateFrompng($path."/".$picname); break; default: exit("无效的图片格式!"); break; } //3. 执行缩放处理 imagecopyresized($newim,$srcim,0,0,0,0,$w,$h,$width,$height); //4. 输出保存绘画 header("Content-Type:".$info['mime']); //设置响应类型为图片格式 //根据原图片类型来保存新图片 switch($info[2]){ case 1: //gif格式 imagegif($newim,$path."/".$prix.$picname); //保存 //imagegif($newim);//输出 break; case 2: //jpeg格式 imagejpeg($newim,$path."/".$prix.$picname); //imagejpeg($newim); break; case 3: //png格式 imagepng($newim,$path."/".$prix.$picname); //imagepng($newim); break; } //4. 销毁资源 imageDestroy($newim); imageDestroy($srcim); }
相关文章推荐
- php 常用文件处理函数 与 文件上传
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- PHP文件上传处理
- PHP基本知识(自定义函数以及文件上传)
- 谈谈php中上传文件的处理
- [PHP]文件上传处理
- PHP文件上传-单文件上传函数
- php上传文件处理
- php文件上传之 $_FILES 函数
- PHP中封装上传文件函数
- PHP设计超级好用的文件上传处理类一 (37)
- 用php和imagemagick来处理图片文件的上传和缩放处理
- PHP文件上传处理案例分析
- PHP之文件系统处理_文件上传处理
- 53 PHP文件处理(六)文件上传--总结---细说php
- php上传文件处理
- 通过php查找并处理函数BOM的文件
- php文件上传处理
- php 文件上传 以及保存在本地的乱码问题处理
- PHP文件上传设置和处理(单文件)