|
|

- <?php
- /*************************************
- PHP 上传文件通用类
- 23:00 2006-11-20 完成
- 作者:月影 QQ:41096834 email:zhangxugg@163.com
- 没有版权,欢迎转发 但请保留此说明 谢谢
- **************************************
- 说明 凡是本人写的PHP类,都以MFC的类的命名方式为参照 即以大写C开头 第二个字母也大写 其它字母小写 如CUpload,CDb,CImage等
- void CUpload::CUpload($upload_dir="./",$str_file)
- 函数功能 构造一个上传类
- 参数 :$upload_dir 上传文件保存目录 默认为当前目录,应该以/结束
- $str_file 文件上传表单名 如"file1"
- void CUpload::set_permit_filter($filter="")
- 函数功能 设置允许的上传文件类型
- 参数 $filter 允许上传文件类型 用~间隔 如$filter="jpg~bmp~gif" 即只允许上传jpg,bmp,gif图片
- 如果不设置此项,则按本类的数据成员$filter来过滤类型
- CUpload::do_upload($dist)
- 函数功能 实现文件上传,并以预定的文件名保存。如果提交的文件类型中有不允许的文件类型,则停止处理并送出提示信息
- 参数 $dist 上传目标文件名,不包括路径 如 up.png
- 使用范例:
- //构造一个上传类对象,并定义将文件上传到 "/upload/"目录下,文件上传表单名为 file1 (但这时文件还没有开始上传)
- $upload=new CUpload("/upload/","file1);
- $upload->set_permit_filter("jpg~jpeg~gif~png"); //设置只能上传 jpg,jpeg,gif,png 类型文件
- $upload->do_upload("test.png"); //执行上传文件操作,并把文件保存为test.png
- 说明:这时
- */
- class CUpload //上传文件类定义
- {
- var $file_name; //文件名:如plmm.jpg
- var $ext_name; //副档名:如jpg 注意,不包含 中间的点
- var $main_name; //主档名 不包含副档名 如plmm
- var $tmp_name; //上传时的临时文件名
- var $upload_dir; //上传路径
- var $file_size; //文件大小
- var $time; //上传文件时间
- var $exist;
- var $permit_filter=""; //允许上传的文件类型 若为空,则只禁止$filter中列出的类型
- //禁止上传的文件类型 如果要禁止文件类型,请加在这里,并以~连接
- var $filter="asp~aspx~asax~asa~jsp~cer~cdx~asa~htr~php~php3~exe~cgi";
- public function __construct($upload_dir="./",$str)
- {
- $this->upload_dir=$upload_dir;
-
- $s=$_FILES[$str]['name'];
- if(empty($_FILES[$str])) { return false;} //没有提交数据时返回
-
- $this->file_name=$s;
- $this->main_name=strtolower(substr($s,0,strrpos($s,".")));
- $this->tmp_name=$_FILES[$str]['tmp_name'];
- $this->file_size=$_FILES[$str]['size']/1024;
- $this->time=date("YmdGis");
- $this->ext_name=strtolower(substr($this->file_name,strrpos($this->file_name,".")+1)); //取扩展名
-
- if($this->file_size<=0) {return false;}
- if(!$this->check_ext_name())
- return false; //检查禁止的文件类型
- //echo $this->file_size;
- }
- //如果设置了此项,则只有在此列表中的类型才允许上传. 比方, 你现在只允许上传图片 可以这样设置过滤
- // $up=new CUpload;
- // $up->set_permit_filter("jpg~jpeg~bmp~png_gif");
- //
-
- function set_permit_filter($filter="")
- {
- $this->permit_filter=$filter;
- }
-
- public function do_upload($opt) //目标文件名,不包括路径
- {
- if($this->file_size<=0) return false;
- if(($this->permit_filter!="")&&(strstr($this->permit_filter,strtolower($this->ext_name))!=""))
- {
- return false;
- }
-
- $this->main_name=strtolower(substr($this->file_name,0,strrpos($this->file_name,".")));
- $this->file_name=$opt;
-
- if(file_exists($this->upload_dir.$this->file_name))
- {
- //echo "文件".$this->file_name."已经存在,跳过上传.";
- return false;
- }
- return (move_uploaded_file($this->tmp_name,$this->upload_dir.$this->file_name)?true:false);
- }
- public function get_ext_name()
- {
- return $this->ext_name;
- }
- private function get_file_size()
- {
- return $this->file_size;
- }
- private function check_ext_name() //检查禁止上传文件扩展名 不用由对象调用
- {
- $tmp_filter=explode("~",$this->filter);
- for($i=0;$i<count($tmp_filter);$i++)
- {
- if(strtolower($this->ext_name)===strtolower($tmp_filter[$i]))
- {
- return false;
- }
- }
- return true;
- }
- }
- ?>
复制代码 下载地址:CUpload.rar |
|