1、php文件上传类程序代码php文件上传类程序代码我们现在只要搜索文件上传类有大把,但是真正好用的上传类不多,下面我介绍这个文件上传类是我自己使用了很久,非常不错的一个代码,大家可参考参考一。代码如下复制代码file_name = $file_name;/重命名方式代表以时间命名,其他则使用给予的名称 $this-save_path = (preg_match(/$/,$save_path) ? $save_path : $save_path . /; $this-allow_types = $allow_types = ? jpg|gif|png|zip|rar : $allow_types;
2、 /* * 上传文件 * access public * param $files 等待上传的文件(表单传来的$_FILES) * return boolean 返回布尔值 */ public function upload_file($files) $name = $filesname; $type = $filestype; $size = $filessize; $tmp_name = $filestmp_name; $error = $fileserror; switch ($error) case 0 : $this-errmsg = ; break; case 1 : $this-
3、errmsg = 超过了php.ini中文件大小; break; case 2 : $this-errmsg = 超过了MAX_FILE_SIZE 选项指定的文件大小; break; case 3 : $this-errmsg = 文件只有部分被上传; break; case 4 : $this-errmsg = 没有文件被上传; break; case 5 : $this-errmsg = 上传文件大小为0; break; default : $this-errmsg = 上传文件失败!; break; if($error = 0 & is_uploaded_file($tmp_name)
4、/检测文件类型 if($this-check_file_type($name) = FALSE) return FALSE; /检测文件大小 if($size $this-max_size) $this-errmsg = 上传文件.$name.太大,最大支持.ceil($this-max_size/1024).kb的文件; return FALSE; $this-set_save_path();/设置文件存放路径 $new_name = $this-file_name != date ? $this-file_name.$this-ext : date(YmdHis).$this-ext;/设
5、置新文件名 $this-uploaded = $this-save_path.$new_name;/上传后的文件名 /移动文件 if(move_uploaded_file($tmp_name,$this-uploaded) $this-errmsg = 文件.$this-uploaded.上传成功!; return TRUE; else $this-errmsg = 文件.$this-uploaded.上传失败!; return FALSE; /* * 检查上传文件类型 * access public * param string $filename 等待检查的文件名 * return 如果检
6、查通过返回TRUE 未通过则返回FALSE和错误消息 */ public function check_file_type($filename) $ext = $this-get_file_type($filename); $this-ext = $ext; $allow_types =explode(|,$this-allow_types);/分割允许上传的文件扩展名为数组 /echo $ext; /检查上传文件扩展名是否在请允许上传的文件扩展名中 if(in_array($ext,$allow_types) return TRUE; else $this-errmsg = 上传文件.$fi
7、lename.类型错误,只支持上传.str_replace(|,$this-allow_types).等文件类型!; return FALSE; /* * 取得文件类型 * access public * param string $filename 要取得文件类型的目标文件名 * return string 文件类型 */ public function get_file_type($filename) $info = pathinfo($filename); $ext = $infoextension; return $ext; /* * 设置文件上传后的保存路径 */ public fu
8、nction set_save_path() $this-save_path = (preg_match(/$/,$this-save_path) ? $this-save_path : $this-save_path . /; if(!is_dir($this-save_path) /如果目录不存在,创建目录 $this-set_dir(); /* * 创建目录 * access public * param string $dir 要创建目录的路径 * return boolean 失败时返回错误消息和FALSE */ public function set_dir($dir = null
9、) /检查路径是否存在 if(!$dir) $dir = $this-save_path; if(is_dir($dir) $this-errmsg = 需要创建的文件夹已经存在!; $dir = explode(/, $dir);foreach($dir as $v) if($v) $d .= $v . /; if(!is_dir($d) $state = mkdir($d, 0777); if(!$state) $this-errmsg = 在创建目录 . $d . 时出错!; return true; /* 图片处理类* 可以对图片进行生成缩略图,打水印等操作* 本类默认编码为UTF8
10、如果要在GBK下使用请将img_mark方法中打中文字符串水印iconv注释去掉* 由于UTF8汉字和英文字母大小(像素)不好确定,在中英文混合出现太多时可能会出现字符串偏左* 或偏右,请根据项目环境对get_mark_xy方法中的$strc_w = strlen($this-mark_str)*7+5进* 行调整* 需要GD库支持,为更好使用本类推荐使用GD库2.0+* author kickflipphp100 QQ263340607*/class uploadImg extends uploadFile public $mark_str = kickflipphp100; /水印字符串
11、public $str_r = 0; /字符串颜色R public $str_g = 0; /字符串颜色G public $str_b = 0; /字符串颜色B public $mark_ttf = ./upload/SIMSUN.TTC; /水印文字字体文件(包含路径) public $mark_logo = ./upload/logo.png; /水印图片 public $resize_h;/生成缩略图高 public $resize_w;/生成缩略图宽 public $source_img;/源图片文件 public $dst_path = ./upload/;/缩略图文件存放目录,不填
12、则为源图片存放目录 /* * 生成缩略图 生成后的图 * access public * param integer $w 缩小后图片的宽(px) * param integer $h 缩小后图片的高(px) * param string $source_img 源图片(路径+文件名) */ public function img_resized($w,$h,$source_img = NULL) $source_img = $source_img = NULL ? $this-uploaded : $source_img;/取得源文件的地址,如果为空则默认为上次上传的图片 if(!is_fi
13、le($source_img) /检查源图片是否存在 $this-errmsg = 文件.$source_img.不存在; return FALSE; $this-source_img = $source_img; $img_info = getimagesize($source_img); $source = $this-img_create($source_img); /创建源图片 $this-resize_w = $w; $this-resize_h = $h; $thumb = imagecreatetruecolor($w,$h); imagecopyresized($thumb,$
14、source,0,0,0,0,$w,$h,$img_info0,$img_info1);/生成缩略图片 $dst_path = $this-dst_path = ? $this-save_path : $this-dst_path; /取得目标文件夹路径 $dst_path = (preg_match(/$/,$dst_path) ? $dst_path : $dst_path . /;/将目标文件夹后加上/ if(!is_dir($dst_path) $this-set_dir($dst_path); /如果不存在目标文件夹则创建 $dst_name = $this-set_newname(
15、$source_img); $this-img_output($thumb,$dst_name);/输出图片 imagedestroy($source); imagedestroy($thumb); /* *打水印 *access public *param string $source_img 源图片路径+文件名 *param integer $mark_type 水印类型(1为英文字符串,2为中文字符串,3为图片logo,默认为英文字符串) *param integer $mark_postion 水印位置(1为左下角,2为右下角,3为左上角,4为右上角,默认为右下角); *return
16、打上水印的图片 */ public function img_mark($source_img = NULL,$mark_type = 1,$mark_postion = 2) $source_img = $source_img = NULL ? $this-uploaded : $source_img;/取得源文件的地址,如果为空则默认为上次上传的图片 if(!is_file($source_img) /检查源图片是否存在 $this-errmsg = 文件.$source_img.不存在; return FALSE; $this-source_img = $source_img; $img
17、_info = getimagesize($source_img); $source = $this-img_create($source_img); /创建源图片 $mark_xy = $this-get_mark_xy($mark_postion);/取得水印位置 $mark_color = imagecolorallocate($source,$this-str_r,$this-str_g,$this-str_b); switch($mark_type) case 1 : /加英文字符串水印 $str = $this-mark_str; imagestring($source,5,$ma
18、rk_xy0,$mark_xy1,$str,$mark_color); $this-img_output($ce,$source_img); break; case 2 : /加中文字符串水印 if(!is_file($this-mark_ttf) /检查字体文件是否存在 $this-errmsg = 打水印失败:字体文件.$this-mark_ttf.不存在!; return FALSE; $str = $this-mark_str; /$str = iconv(gbk,utf-8,$str);/转换字符编码 如果使用GBK编码请去掉此行注释 imagettftext($source,12,
19、0,$mark_xy2,$mark_xy3,$mark_color,$this-mark_ttf,$str); $this-img_output($source,$source_img); break; case 3 : /加图片水印 if(is_file($this-mark_logo) /如果存在水印logo的图片则取得logo图片的基本信息,不存在则退出 $logo_info = getimagesize($this-mark_logo); else $this-errmsg = 打水印失败:logo文件.$this-mark_logo.不存在!; return FALSE; $logo
20、_info = getimagesize($this-mark_logo); if($logo_info0$img_info0 | $logo_info1$img_info1) /如果源图片小于logo大小则退出 $this-errmsg = 打水印失败:源图片.$this-source_img.比.$this-mark_logo.小!; return FALSE; $logo = $this-img_create($this-mark_logo); imagecopy ( $source, $logo, $mark_xy4, $mark_xy5, 0, 0, $logo_info0, $logo_info1); $this-img_output($source,$source_img); break; default: /其它则为文字图片 $str = $this-mark_str; imagestring($source,5,$mark_xy0,$mark_xy1,$str,$mark_color); $this-img_output($source,$source_img); break; imagedestroy($source); /* * 取得
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1