php写一个上传文件的类,一个完美php文件上传类使用实例

这个文件上传类可以自定上传文件大小与上传文件类型及文件保存地址,使用起来也大兴非常的方法,有一个文就是如果是中文文件名是上传会是乱码,所以大家解决办法就是把页面保存成uft8即可解决.

因为写毕设论文写累了所以就发表一篇关于上传文件类的东东吧,这个类也是自己写的,不知道对大家有没有用,如果觉得可以就拿去用吧,不过在编码上面还是没做好,自己是在utf8的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换,代码如下:

define('NO_FILE','不存在上传文件');

define('NOT_ALLOW_EXT','文件类型不在允许范围内');

define('NOT_ALLOW_SIZE','文件大小不在允许范围内');

define('HAS_THE_FILE','该文件已经存在');

define('UPLOAD_FAILED','上传失败');

define('UPLOAD_SUCCESS','上传成功');

classfile_uploader

{

var$_file;

var$_filesize;

var$_fileext;

var$_filedir;

var$_filename;

var$_filetmpname;

var$allowsize;

var$allowext;

var$neednewname;

var$newname;

var$syslang;

var$report;

functionready($filedir='',$file,$allowsize='',$allowext='',$neednewname= false,$report= 0){

$this->_filedir =is_dir($filedir) ?$filedir:'';

if(emptyempty($file) || !isset($file['size']) ||$file['size'] == 0)$this->error(NO_FILE);

$this->_filesize =$file['size'];

$this->_filename =$file['name'];

$this->_filetmpname =$file['tmp_name'];

$this->allowsize =$allowsize;

$this->allowext =$allowext;

$this->neednewname = ($neednewname) ? true : false;

$this->newname ='';

$this->report =$report;

}

functiondo_upload(){

if(!is_uploaded_file($this->_filetmpname))$this->error(NO_FILE);

if($this->chk_ext()){

$this->error(NOT_ALLOW_EXT);

return'';

}

if($this->chk_size()){

$this->error(NOT_ALLOW_SIZE);

return'';

}

if($this->neednewname)$this->newname =$this->generate_name().".".$this->get_fileext();

if($this->chk_hasfile()){

$this->error(HAS_THE_FILE);

return'';

}

$filename=emptyempty($this->newname) ? @iconv('utf-8','gb2312',$this->_filename) :$this->newname;

@chmod($this->_filedir.$filename, 0777);

if(move_uploaded_file($this->_filetmpname,$this->_filedir.$filename)){

return$this->result();

}else{

$this->error(UPLOAD_FAILED);

return'';

}

}

functionchk_ext(){

if(emptyempty($this->allowext) || in_array($this->get_fileext(),explode("|",$this->allowext)))returnfalse;

returntrue;

}

functionchk_size(){

if(emptyempty($this->allowsize) || get_filesize <=$this->allowsize*1024*1024)returnfalse;

returntrue;

}

functionget_filesize(){

return$this->_filesize;

}

functionget_fileext(){

returnsubstr($this->_filename,strrpos($this->_filename,".")+1);

}

functiongenerate_name(){

returnsubstr(md5(time()),26);

}

functionchk_hasfile(){

returnis_file($this->_filedir.$this->_filename);

}

functionerror($tip){

echo$tip;

}

functionresult(){

if($this->report){

$filename=emptyempty($this->newname) ?$this->_filename :$this->newname;

$arr=array('filename'=>$filename,'filesize'=>$this->_filesize,'tip'=> UPLOAD_SUCCESS);

return$arr;

}else{

returnUPLOAD_SUCCESS;

}

}

}

/***使用方法与参数说明***/

/***

第一个参数$dir 为上传文件存放的路径

第二个参数为$_FILES 为你那个上传文件变量

第三个参数允许文件大小 单位为MB

第四个参数允许的文件类型 格式为jpg|png|gif

第五个参数是否需要生成新的文件名

第六个参数为返回的提示格式 0为直接提示上传正确 1则返回一个数组array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);

***/

//require("类文件");

//$u = new file_uploader;

//$u->ready($dir, $_FILES['upload_file'], false, false, true, 0);

//echo $u->do_upload();

?>

随便说下这个类怎样调用吧,方法很简单,代码如下:

$dir='upload/';

require("upload_class.php");

$u=newfile_uploader;

$u->ready($dir,$_FILES['upload_file'], false, false, true, 0);

echo$u->do_upload();

这里上传文件的操作也是“上传文件就这么简单!”,当然那个$_FILES['upload_file']是对应表单中的file类型的控件的名字,而需不需要在上传后输出提示就看你自己啦,关于参数在代码那里面有详细说明,不过这里也是放出来吧.

ready方法的参数说明:

第一个参数$dir 为上传文件存放的路径

第二个参数为$_FILES 为你那个上传文件变量

第三个参数允许文件大小 单位为MB

第四个参数允许的文件类型 格式为jpg|png|gif

第五个参数是否需要生成新的文件名

第六个参数为返回的提示格式 0为直接提示上传正确 1则返回一个数组array('filename' => 上传的文件名字,'filesize' => 文件大小,'tip' => 成功上传);

(责任编辑:最模板)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值