

- PHP上传文件通用类CUpload
- 发布时间:2007-10-04 22:37:09 浏览数:5925 发布者:superadmin 设置字体【大 中 小】
<?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