自己写的一个简易单文件上传类
2012-12-05 00:00
232 查看
html上传表单:
处理上传后的php文件
文件上传类:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <form method="post" action="up.php" enctype='multipart/form-data'> <span>文件:</span><input type='file' name='file' ><br> <input type='submit' value='上传' ><br> </form> </body> </html>
处理上传后的php文件
<?php if(isset($_FILES['file'])){ include 'uploadFile.class.php'; $up=new uploadFile('file');//file为input的name值 $up->setAllowTypes('jpg,jpeg');//手动设置允许上传的类型为jpg,jpeg $up->setAllowMaxSize(4);//手动设置上传的最大容量为4mb if(!!$res=$up->upload()){ echo $res; echo '上传文件成功'; }else{ echo $up->getError(); echo '上传失败'; } } ?>
文件上传类:
<?php //水平有限,目前只有单文件上传 class uploadFile{ private $allowTypes='jpg,jpeg,gif,bmp';//允许上传的文件类型 private $allowMaxSize=1;//允许文件的最大容量,1为1mb的意思 private $_file;//存在上传后的数组信息 private $error_num;//错误代码 private $error_info=array( 0=>'成功', 1=>'大小超过upload_max_filesize', 2=>'大小超过MAX_FILE_SIZE', 3=>'文件只被部分上传', 4=>'没有上传任何文件', 6=>'没有指定upload_tmp_dir目录', 7=>'文件写入磁盘错误', // 8=>'该类型文件不允许上传', // 9=>'文件太大', 10=>'文件不是通过http post上传的', 11=>'文件移动失败', );//错误信息 public function __construct($name){//传入文件input中的name值 $this->_file=$_FILES[$name]; } //上传操作 public function upload(){ //上传失败 if($this->_file['error']>0){ $this->error_num=$this->_file['error']; return false; } //类型不通过 if(!$this->checkType()){ $this->error_num=8; $this->error_info[8]='只能是以下类型文件:'.$this->allowTypes; return false; } //大小超过最大值 if(!$this->checkSize()){ $this->error_num=9; $this->error_info[9]='文件最大不能超过:'.$this->allowMaxSize.'mb'; return false; } //文件不是通过http post上传的 if(!is_uploaded_file($this->_file['tmp_name'])){ $this->error_num=10; return false; } $newdir='./images'.date('/Ym/d').'/'; if(!is_dir($newdir)){ mkdir($newdir,0777,true);//创建存放图片的目录 } $newpath=$newdir.$this->getRandName().'.'.$this->getFileType(); if(!move_uploaded_file($this->_file['tmp_name'],$newpath)){ $this->error_num=11; return false; }else{ return $newpath; } } //检查文件类型是否符合 private function checkType(){ $type=explode(',',$this->allowTypes); $filetype=$this->getFileType(); if(!in_array($filetype,$type)){ return false; }else{ return true; } } //获取文件类型 private function getFileType(){ $arr=pathinfo($this->_file['name']); return strtolower($arr['extension']); } //检查文件大小 private function checkSize(){ $filesize=$this->_file['size']; if($filesize>$this->allowMaxSize*1024*1024){ return false; }else{ return true; } } //随机文件名 private function getRandName(){ $str='abcdefghijklmnopqrstuvwxyz'; return substr(str_shuffle($str),0,8).time(); } //获取错误信息 public function getError(){ return $this->error_info[$this->error_num]; } //手动设置允许的文件上传类型 public function setAllowTypes($str){ $this->allowTypes=$str; } //手动设置最大上传大小 public function setAllowMaxSize($size){ $this->allowMaxSize=$size; } }
相关文章推荐
- 自己写的一个简易单文件上传类
- 自己写一个ORM框架-实现生成javabean文件--也是一个代码生成器的实现
- 利用bootstrap和js完成一个简易的文件上传按钮
- 实现一个简易的IoC框架(上)(此篇与Spring.NET无关,为自己手写IoC框架)
- 自己创建一个本地服务器,实现文件下载
- 自己写一个简易的string类型
- 【HexWS】自己写一个PE文件 _蹭课学习成果
- 做一个自己的清理临时文件的小程序(附成品&升级版)
- 自己写的一个PE文件FileVersionInfo类,可以轻松获取PE文件版本信息
- 自己写了一个文件加密解密工具
- javascript及php笔记:自己动手写一个ajax异步上传文件的jquery插件
- 一个小工具,自己写着玩--禁止非法ip远程ssh 登录,并把登录的ip记录到文件中
- eclipse有时新建一个PHP文件或者是HTML文件没有快捷键太麻烦了,总要用鼠标点 怎么创建自己的快捷键呢?
- PHP-自己写一个简易的MVC
- 自己编写的久经考验的文件上传类,可以直接使用
- 很有意思的一个自定义CGI,用BAT文件做的。大家发挥想象,自己发挥哈~
- 使用了博客园的备份后得到一个xml文件,不知道有没有css或者xslt文件可以在本地阅读文章,在网上找了半天也没有找到解决办法,难道要自己写?
- ASP.Net做的简易版文件管理器,就一个aspx文件的版本
- 自己写了一个flume小文件合并脚本,解决hdfs小文件过多问题
- Python检验一个文件是否存在,如果不在就自己填写内容。