upload.func.php的代码<?php /*** 构建上传文件信息函数 */function buildInfo(){ if(!$_FILES){ return ; } $i=0; foreach($_FILES as $v){ //如果是单文件 if(is_string($v['name'])){ //判断$v是一个数字还是字符串 如果是字符串就是 单文件上传 如果是数组就是多文件上传 $files[$i]=$v; $i++; }else{ //多文件 foreach($v['name'] as $key=>$val){ $files[$i]['name']=$val; $files[$i]['size']=$v['size'][$key]; $files[$i]['tmp_name']=$v['tmp_name'][$key]; $files[$i]['error']=$v['error'][$key]; $files[$i]['type']=$v['type'][$key]; $i++; } } } return $files;}/*** uploadFile()文件上传函数 @param string $path 上传图片到这个文件夹下 @param array $allowExt 文件类型数组 @param string $maxSize 文件大小 @param boolean $imgFlag 判断是否是真实的图片文件(没有改过的文件名后缀)*/function uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=51200,$imgFlag=true){ if(!file_exists($path)){ //如果uploads文件夹不存在 mkdir($path,755,true); //mkdir() 函数创建目录。 将默认的访问权限0777 改为写入权限755 } $i=0; $files=buildInfo(); //调用文件信息函数 实现单文件和多文件混传 或者单文件上传 或者多文件上传 if(!($files&&is_array($files))){ return ; } //判断错误信息 foreach($files as $file){ if($file['error']===UPLOAD_ERR_OK){ //没有错误 $ext=getExt($file['name']); //得到文件扩展名 //检测文件的扩展名 if(!in_array($ext,$allowExt)){ exit("非法文件类型"); } //校验是否是一个真正的图片类型 if($imgFlag){ //验证图片是否是一个真正的图片类型 //getimagesize()取得 GIF、JPEG 及 PNG 三种 WWW 上图片的高与宽, if(!getimagesize($file['tmp_name'])){ exit("不是真正的图片类型"); } } //上传文件的大小 if($file['size']>$maxSize){ //不能大于500kb exit("上传文件过大"); } if(!is_uploaded_file($file['tmp_name'])){ //如果是post上传 exit("不是通过HTTP POST方式上传上来的"); } $filename=getUniName().".".$ext; //得到文件扩展名 $destination=$path."/".$filename; //文件路径 //move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。 if(move_uploaded_file($file['tmp_name'], $destination)){ $file['name']=$filename; //文件名 = 唯一的字符串拼上文件扩展名 unset($file['tmp_name'],$file['size'],$file['type']); //销毁无用的文件信息 $uploadedFiles[$i]=$file; $i++; } }else{ switch($file['error']){ case 1: $mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE break; case 2: $mes="超过了表单设置上传文件的大小"; //UPLOAD_ERR_FORM_SIZE break; case 3: $mes="文件部分被上传";//UPLOAD_ERR_PARTIAL break; case 4: $mes="没有文件被上传1111";//UPLOAD_ERR_NO_FILE break; case 6: $mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR break; case 7: $mes="文件不可写";//UPLOAD_ERR_CANT_WRITE; break; case 8: $mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION break; } echo $mes; } } return $uploadedFiles;} //服务器端PHP配置文件 //file_uploads=On 支持通过HTTP POST方式上传文件 //upload_tmp_dir="E:\xampp\tmp" 临时文件保存的路径 //max_file_uploads=20 表单上传的文件的最大大小默认为2M //post_max_size=8M 表单已post方式发送数据的最大值默认是8M //客户端进行配置 //<input type="hidden" name="MAX_FILE_SIZE" value="1024"/>?>/////////////////////////////////////image.func.php文件的代码<?php require_once '../include.php'; //包含字符串处理文件 /*** @param $sess_name session中保存验证码的名字 @param $type 验证码类型 @param $length 验证码长度 @param $pixel 默认需不需要干扰元素 true需要 false不需要 */ function verifyImage($type=1,$length=4,$sess_name = 'verify'){ $chars = bulidRandomString(1,4); //调用随机数函数 $_SESSION[$sess_name] = $chars; echo $_SESSION[$sess_name]; } /*** * 生成缩略图函数thumb() @param string $filename 传入的图像 @param string $destination 文件夹 @param int $dst_w 画布宽 @param int $dst_h 画布高 @param boolean $isReservedSource 是否删除原文件 @param number $scale 缩放比例 return string $dstFilename 返回文件名 */ function thumb($filename,$destination=null,$dst_w=null,$dst_h=null,$isReservedSource=true,$scale=0.5){ //得到原图像的宽高和类型 赋值给变量$src_w,$src_h,$imagetype list($src_w,$src_h,$imagetype) = getimagesize($filename); //如果没有传比例就用默认的缩放比例 //$scale=0.5; //默认的缩放比例 //is_null 检测是否为空 if(is_null($dst_w)||is_null($dst_h)){ $dst_w=ceil($src_w*$scale); //新图像宽=原图像宽乘以缩放比例 $dst_h=ceil($src_h*$scale); //新图像高=原图像高乘以缩放比例 } //image_type_to_mime_type — 取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型 返回文件类型 $mime = image_type_to_mime_type($imagetype); $createFun = str_replace("/", "createfrom", $mime); //$createFun = imagecreatefromjpeg $outFun = str_replace("/",null,$mime); //$outFun = imagejpeg //imagecreatetruecolor 新建一个画布资源 $src_image = $createFun($filename); //创建原图像资源 //imagecreatetruecolor 新建一个画布资源 $dst_image = imagecreatetruecolor($dst_w, $dst_h); /*** * 重采样图片并拷贝
bool imagecopyresampled ( resource $dst_image , resource
$src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int
$dst_w , int $dst_h , int $src_w , int $src_h ) $dst_image:新建的图片 $src_image:需要载入的图片 $dst_x:设定需要载入的图片在新图中的x坐标 $dst_y:设定需要载入的图片在新图中的y坐标 $src_x:设定载入图片要载入的区域x坐标 $src_y:设定载入图片要载入的区域y坐标 $dst_w:设定载入的原图的宽度(在此设置缩放) $dst_h:设定载入的原图的高度(在此设置缩放) $src_w:原图要载入的宽度 $src_h:原图要载入的高度 imagecopyresampled()用来改变图像大小 */ imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h); //file_exists() 函数检查文件或目录是否存在 //dirname() 函数返回路径中的目录部分。 /*** mkdir() 函数创建目录。 mkdir(path,mode,recursive,context) path 必需。规定要创建的目录的名称。 mode 必需。规定权限。默认是 0777。 改为755文件可写 */ if($destination&&!file_exists(dirname($destination))){ //如果文件存在 目录也不存在 mkdir(dirname($destination),755,true); //创建目录 } //getUniName()生成唯一字符串函数.文件扩展名 $dstFilename = $destination==null?getUniName().".".getExt($filename):$destination; $outFun($dst_image,$dstFilename); imagedestroy($src_image); //销毁原图像 imagedestroy($dst_image); //销毁新图像 //$isReservedSource = false; //默认不保留原文件 if(!$isReservedSource){ //如果不需要保留原文件 unlink($filename); //删除原文件 } return $dstFilename; //返回文件名 }?>
1 回答
- 1 回答
- 0 关注
- 1978 浏览
添加回答
举报
0/150
提交
取消