侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

一个完整的php文件上传类实例讲解

php  /  管理员 发布于 7年前   126

这个文件上传类可以自定上传文件大小与上传文件类型及文件保存地址,在使用过程中有一个问题就是如果是中文文件名进行上传就会出现乱码,所以大家解决办法就是把页面保存成uft8即可解决。

下面就是为大家分享的代码:

_filedir = is_dir($filedir) ? $filedir : '';    if(empty($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 = empty($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(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;    return true;  }    function chk_size(){    if(empty($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 = empty($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();

补充说明:在编码上面还是有些问题,自己是在utf8的页面将数据进行提交的,所以生成的文件如果保持原来的中文名字的话在文件夹中看到就是乱码的名字,如果不想出现乱码的话需要进行一下编码的转换。

以上就是本文的全部内容,希望对大家的学习有所帮助。

您可能感兴趣的文章:

  • PHP5+UTF8多文件上传类
  • php 文件上传类代码
  • 一个经典的PHP文件上传类分享
  • php可生成缩略图的文件上传类实例
  • php判断文件上传类型及过滤不安全数据的方法
  • PHP多文件上传类实例
  • 适用于初学者的简易PHP文件上传类
  • PHP文件上传类实例详解
  • PHP实现的多文件上传类及用法示例
  • 非常经典的PHP文件上传类分享


  • 上一条:
    php+ajax制作无刷新留言板
    下一条:
    php邮件发送的两种方式
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客