上传文件函数带生成缩略图(不完整版)

来源:互联网 发布:暗黑启示录3破解版java 编辑:程序博客网 时间:2024/05/18 01:44
没啥技术含量,唯一的亮点是原创...
function superupload($data){/* *<input type="file" name="upname[]" /> name必须为数组 *2011-8-20 by zhjx922 *超级上传函数 *$data['file'](需要上传的文件),$data['fmode'](文件存放方式),$data['size'](文件大小,单位为KB) *$data['type'](允许上传的类型<格式jpg,gif,txt>),$data['img'](启用图片大小限制,maxwidth,maxheight) *$data['thumb'](生成缩略图)<$data['thumb']['width'],$data['thumb']['height']> *///文件夹存放方式if(!isset($data['fmode']))$data['fmode']='no';if(!isset($data['diy']))$data['diy']='zhjx922_';$fMode = array('days' => date("Y").date("m").date("z").'/','weeks' => date("Y").date("W").'/','months' => date("Y").date("m").'/','years' => date("Y").'/','no'=>'');//上传文件命名规则$nMode = array('default' => $data['diy'].date("Ymd").time().rand(100,999)//上传后文件名命名规则,可以自定义);//错误信息$uploadErrors = array(        '0'=>'上传成功!',        '1'=>'文件超过了 php.ini 中 upload_max_filesize 选项限制的值。',        '2'=>'文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。',        '3'=>'只有部分文件被上传。',        '4'=>'没有文件被上传。',        '6'=>'找不到临时文件夹请检查。','7'=>'文件写入失败。','10'=>'不允许上传该类型。','11'=>'文件大小超过限制','12'=>'图片宽度超出限制','13'=>'图片高度超出限制',);$result = array();if(!isset($data['path'])){$data['path'] = dirname(__FILE__).'/upload/';}$pathstr = substr($data['path'], -1);if($pathstr!='/'||$pathstr!='\\'){$data['path'] = $data['path'].'/';}$folder = $fMode[$data['fmode']];$data['path'] = str_replace("\\", '/', $data['path'].$folder);if(!is_file($data['path'])){@mkdir($data['path'], 0777, true);}//开始上传$data['file'] = FILES[$data['file']];//后缀名一律转小写$typearr = explode(',',$data['type']);foreach($typearr as $k => $v){$newtype[$k] = strtolower($v);}foreach($data['file']['name'] as $k=>$v){if(isset($data['file']['name'][$k])){$result[$k]['name'] = $data['file']['name'][$k];$result[$k]['type'] = $data['file']['type'][$k];$result[$k]['size'] = $data['file']['size'][$k];$fix = strtolower(getUpFix(basename($data['file']['name'][$k])));if(isset($data['type'])&&!empty($data['type'])){if(empty($fix) || !in_array($fix,$newtype)){$result[$k]['msg'] = $uploadErrors['10'];$result[$k]['success'] = '0';//失败continue;}}if(isset($data['img'])){list($result[$k]['imgwidth'], $result[$k]['imgheight'], $result[$k]['imgtype'], $result[$k]['imgattr']) = @getimagesize($data['file']['tmp_name'][$k]);if(isset($data['maxwidth'])&&$result[$k]['imgwidth']>$data['maxwidth']){$result[$k]['msg'] = $uploadErrors['12'];continue;}if(isset($data['maxheight'])&&$result[$k]['imgheight']>$data['maxheight']){$result[$k]['msg'] = $uploadErrors['13'];continue;}}if(isset($data['size'])&&@filesize($data['file']['tmp_name'][$k])>$data['size']*1024){$result[$k]['msg'] = $uploadErrors['11'];$result[$k]['success'] = '0';//失败continue;}$upname = $nMode['default'].'_'.$k.'.'.$fix;if(file_exists($data['path'].$upname)){$upname = $nMode['default'].'_'.$k.$k.'.'.$fix;}if (!@move_uploaded_file($data['file']['tmp_name'][$k], $data['path'].$upname)){$result[$k]['success'] = '0';//失败}else{$result[$k]['success'] = '1';//成功$result[$k]['path'] = $folder.$upname;if(isset($data['thumb'])){$data['thumb']['src'] = $data['path'].$upname;superthumb($data['thumb']);}}$result[$k]['msg'] = $uploadErrors[$data['file']['error'][$k]];}}//if($k=='0'){//return $result[$k];//}else{return $result;//}}

 

function superthumb($data){/* *2011-8-20 by zhjx922 *超级缩略图函数 *$data['src'](源文件),$data['auto'](自动缩放),$data['width'](生成宽度),$data['height'](生成高度) *$data['path'](保存路径,不设置输出图像),$data['img'](启用图片大小限制,maxwidth,maxheight) *$data['n'] */$thumbErrors = array('0'=>'生成失败','1'=>'源文件不存在','2'=>'不支持该格式图片','3'=>'只有部分文件被上传。','4'=>'没有文件被上传。','6'=>'找不到临时文件夹请检查。','7'=>'文件写入失败。','10'=>'不允许上传该类型。','11'=>'文件大小超过限制','12'=>'图片宽度超出限制','13'=>'图片高度超出限制',);//$src,$dst_width,$dst_height,$path=null$filename = realpath($data['src']);if(!file_exists($filename)){header("Content-Type:text/html;charset=utf-8");echo $thumbErrors['1'];exit();}list($src_width, $src_height, $type) = getimagesize($filename);if(isset($data['auto'])){if(isset($data['width'])){$dst_width = $data['width'];$scale = $src_width/$dst_width;$dst_height = $src_height/$scale;}else if(isset($data['height'])){$dst_height = $data['height'];$scale = $src_height/$dst_height;$dst_width = $src_width/$scale;}else{//手动设置宽高度$dst_width = $data['width'];$dst_height = $data['height'];}}else{//手动设置宽高度$dst_width = $data['width'];$dst_height = $data['height'];}//$color = imagecolorallocate($image_p, 255 , 255, 255);//背景颜色(白色255,255,255)//imagefill($image_p, 0, 0, $color);switch($type){case 1:$image = imagecreatefromgif($filename);break;case 2:$image = imagecreatefromjpeg($filename);break;case 3:$image = imagecreatefrompng($filename);imagealphablending($image,false);imagesavealpha($image,true); //保存alpha通道信息(PNG)break;default:echo $thumbErrors['2'];exit();}$src_image = imagecreatetruecolor($dst_width,$dst_height);//创建小图if($type=='3'){imagealphablending($src_image,false);imagesavealpha($src_image,true);}    imagecopyresampled($src_image,$image,0,0,0,0,$dst_width,$dst_height,$src_width,$src_height);    switch($type){case 1://GIF背景透明$bgcolor=ImageColorAllocate($src_image,0,0,0);$bgcolor = ImageColorTransparent($src_image,$bgcolor) ;imagegif($src_image, $data['src']);//输出图像break;case 2:imagejpeg($src_image, $data['src'], 100);//输出图像break;case 3:imagepng($src_image, $data['src']);//输出图像break;default:imagejpeg($src_image, $data['src'], 100);//输出图像}//销毁imagedestroy($src_image);}function getUpFix($file_name){$extend =explode("." , $file_name);$va=count($extend)-1;return $extend[$va];}