一个完美php文件上传类使用实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-07-03 14:42:31 浏览: 评论:0
这个文件上传类可以自定上传文件大小与上传文件类型及文件保存地址,使用起来也大兴非常的方法,有一个文就是如果是中文文件名是上传会是乱码,所以大家解决办法就是把页面保存成uft8即可解决.
因为写毕设论文写累了所以就发表一篇关于上传文件类的东东吧,这个类也是自己写的,不知道对大家有没有用,如果觉得可以就拿去用吧,不过在编码上面还是没做好,自己是在utf8的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换,代码如下:
- <?php
- define('NO_FILE', '不存在上传文件');
- define('NOT_ALLOW_EXT', '文件类型不在允许范围内');
- define('NOT_ALLOW_SIZE', '文件大小不在允许范围内');
- define('HAS_THE_FILE', '该文件已经存在');
- define('UPLOAD_FAILED', '上传失败');
- define('UPLOAD_SUCCESS', '上传成功');
- class file_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;
- function ready($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;
- }
- function do_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 '';
- }
- }
- function chk_ext(){
- if(emptyempty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;
- return true;
- }
- function chk_size(){
- if(emptyempty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false;
- return true;
- }
- function get_filesize(){
- return $this->_filesize;
- }
- function get_fileext(){
- return substr($this->_filename,strrpos($this->_filename,".")+1);
- }
- function generate_name(){
- return substr(md5(time()),26);
- }
- function chk_hasfile(){
- return is_file($this->_filedir.$this->_filename);
- }
- function error($tip){
- echo $tip;
- }
- function result(){
- if($this->report){
- $filename = emptyempty($this->newname) ? $this->_filename : $this->newname;
- $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);
- return $arr;
- }else{
- return UPLOAD_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 = new file_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' => 成功上传);
Tags: php文件上传类 使用实例
- 上一篇:PHP 下载文件时自动添加bom头的方法
- 下一篇:php文件上传实例
相关文章
- ·php文件上传类程序代码(2014-08-28)
- ·一个实用的php 文件上传类代码(2014-09-06)
- ·php文件上传类与详解(2014-09-08)
- ·php文件上传类可生成缩略图代码(2014-09-09)
- ·php 判断文件上传类型与过滤不安全数据(2014-09-10)
- ·一个完整的php文件上传类实例讲解(2021-06-23)
- ·适用于初学者的简易PHP文件上传类(2021-06-23)
- ·PHP文件上传类实例详解(2021-07-27)
- ·php文件上传类完整实例(2021-08-05)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)