自己编写的久经考验的文件上传类,可以直接使用
2013-09-15 19:14
295 查看
<?php defined('ACC')||exit('你没有访问权限'); /*一个上传类需要的知识点 1.判断允许上传的后缀名 2.判断允许上传的最大限制 3.创建目录 4.创建随机文件名 5.上传 */ class upTool{ protected $allowExt='jpg,png,jpeg'; protected $maxSize=1; protected $errno = 0; // 错误代码 protected $error = array( 0=>'无错', 1=>'上传文件超出系统限制', 2=>'上传文件大小超出网页表单页面', 3=>'文件只有部分被上传', 4=>'没有文件被上传', 6=>'找不到临时文件夹', 7=>'文件写入失败', 8=>'不允许的文件后缀', 9=>'文件大小超出的类的允许范围', 10=>'创建目录失败', 11=>'移动失败' ); //根据后面的一系列方法开始上传 public function upload($key){ //1,先判断是否存在上传文件 if(!isset($_FILES[$key])){ return false; } //2.如果有的话,接下来判断是否上传成功 $f=$_FILES[$key]; if($f['error']){ $this->errno=$f['error']; return false; } //3.判断文件后缀是否是允许的 $ext=$this->getExt($f['name']); if(!$this->isAllowExt($ext)){ $this->errno=8; return false; } //4.判断上传大小 if(!$this->isAllowSize($f['size'])){ $this->errno=9; return false; } //5.判断完毕后,开始创建路径 if(!($dir=$this->mk_dir())){ $this->errno=10; return false; } $path=$dir.$this->randName().'.'.$ext; //6.将上传文件移动到制定的路径中 if(!move_uploaded_file($f['tmp_name'],$path)){ $this->errno=11; return false; } return str_replace(ROOT,'',$path); } //获取错误信息 public function getErr(){ return $this->error[$this->errno]; } //获取上传文件的后缀名 protected function getExt($file){ $ext=explode('.',$file); return end($ext); } //判断是否是允许的文件后缀名 protected function isAllowExt($ext){ $arr=explode(',',strtolower($this->allowExt)); return in_array(strtolower($ext),$arr); } //判断是否是允许上传的大小 protected function isAllowSize($size){ return $size<=$this->maxSize*1024*1024; } //获取随机的文件名 protected function randName($length=6){ $str='abcdefghigklmnopqrstuvwxyz0123456789'; return substr(str_shuffle($str),0,$length); } //创建存贮路径 protected function mk_dir(){ $dir=ROOT.'data/images/'.date('ym/d/',time()); if(is_dir($dir)||mkdir($dir,0777,true)){ return $dir; } } //设置允许的文件后缀 public function setExt($ext){ return $this->allowExt=$ext; } //设置文件上传的最大值 public function setMax($max){ return $this->maxSize=$max; } } ?>
这是我自己写的一个文件上传类,先在上传之前写几个上传需要的方法。然后一步一步的调用方法,实现文件上传并且处理的功能。功能强大,步骤清晰,思路严谨。该工具类久经考验,可以直接拿来使用。同时,也可以用来学习用,可以帮助您进一步理解面向对象编程的魅力之所在。接下来我将该工具类分享给大家。
相关文章推荐
- 热更新如果是android平台的话,可以直接.cs文件到本地,然后使用反射进行加载。 如果是IOS平台的话,就没有办法直接更新.cs文件了,可以使用ULua进行搞定。
- 一个可以直接拖拽文件到Eclipse中使用Eclipse打开的插件
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- python windows进制文件可以直接下载使用
- 图片封装下载器--自己的代码库--可以直接使用
- XenServer没有自己的文件系统,也就没有自己的ISO Libery,给我们创建虚拟机带来了不少困扰,使用正文这个方法可以不用先安装FileServer
- ★实验 8-1 1. 创建一个守候进程。并为自己创建独立的日志文件。 2. 每隔 1s 向日志文件中写入如下信息: a) 未使用的内存大小(MemFree) 可以从/proc/meminf
- 在dedecms的模板文件中可以直接使用switch判断语句
- 使用firefox直接 打开pdf文件可以破解禁止打印的功能
- 使用定义文件和WINAPI宏编写自己的API动态库
- Java解析json文件的方法--直接拷贝可以使用
- 自己编写的一个库文件,还在不断丰富中,欢迎使用
- 工程中编写自己的makefile---5 在实例2中使用库文件
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- 我写的图片、文件操作类(自己写的,以后用到的时候可以直接用,哈哈哈)
- 使用定义文件和WINAPI宏编写自己的API动态库
- jsp连接数据库dao层的编写,可以形成直接的工具文件
- 利用5个标签,4个文本框,2个按钮,自己设计布局实现输入三边求三角形面积。界面如下所示。三角形类的编写可以使用实验4中已经写过的三角形类,当点击“判断三边”时,若能构成三角形,在标签5上显示“可以构成三角形!”,如不能构成三角形,在标签5上显示“不能构成三
- 【文件上传】uploadify插件配合java的使用,可以图片,按照步骤可以复制粘贴直接运行,2017年
- 基本上包含了Foudation框架内的所有函数和方法。 使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可。