又花了半天时间写了个php上传类解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了又花了半天时间写了个php上传类解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4217字,纯文字阅读大概需要7分钟。
内容图文
![又花了半天时间写了个php上传类解决方法](/upload/InfoBanner/zyjiaocheng/214/64f57d5a93b5482f8f8f4c934c2dc41e.jpg)
刚学PHP没多久,为了更好的练习及熟悉PHP,自己花了大半天写了个php上传类,在这里做个笔记,欢迎朋友们对这个类做修改及优化。
- PHP code
//up_class.php <?php class UpFile{ private $inputFile; //文件域名 private $tmpName; //临时文件名 private $tmpPath; //临时文件路径 private $savePath; //保存路径 private $reType; //返回类型 private $upMaxSize; //上传文件大小限制 private $allowFile; //允许上传的文件 private $upFolder; //要上传到的文件夹 private $isReName; //是否要将上传的文件重命名 private $endFileName; //最终保存的文件名 public $fileSize; //文件大小 public $fileType; //文件类型 public $errorInt; //上传失败及错误原因 /** * @param * $inputFile(表单内文件域名称); * $upFolder(保存到服务器的文件夹); * $isRename(对上传文件重命名,值 有 y|n ); * $reType(上传成功后返回的值:n是返回文件名,pn:返回路径和文件名,j:返回js[待扩展]); * $upExt(要上传的文件分类,因为在不同的表单要限制不同的上传文件类型,比如 A表单只能上传图片,B表单只能上伟压缩包); * $maxSize(限制上传的文件大小) * @author:256kb * @2012-5-1 */ public function __construct($inputFile , $upExt = 0 , $reType = 'pn' , $upFolder = 'upload/' , $isRename = 'y' , $maxSize = 10485760){ $this->inputFile = $inputFile; $this->reType = $reType; $this->upMaxSize = $maxSize; $this->allowFile = $upExt; $this->upFolder = $upFolder; $this->isReName = $isRename; //$this->errorInt = -1; } public function upFile(){ $_file_arr = $_FILES[$this->inputFile]; $this->errorInt = $_file_arr['error']; if(is_uploaded_file($_file_arr['tmp_name'])){ if($_file_arr['tmp_name']){ $this->tmpName = $_file_arr['name']; $this->upMaxSize = $_file_arr['size']; $this->fileType = $_file_arr['type']; $this->tmpPath = $_file_arr['tmp_name']; $this->fileSize = $_file_arr['size']; if($this->upMaxSize > $this->upMaxSize){ $this->errorInt = 6 ; //大小超出网站限制 } if(!$this->isAllow()){ $this->errorInt = 8 ; //系统不允许此类型文件 } if($this->isReName=='y'){ $this->savePath = $this->upFolder.$this->getFolder().'/'.$this->getNewName() ; $this->endFileName = $this->getNewName(); }else{ $this->savePath = $this->upFolder.$this->getFolder().'/'.$this->tmpName ; $this->endFileName = $this->tmpName; } //echo $this->errorInt; if(!$this->errorInt >= 1){ move_uploaded_file($this->tmpPath,$this->savePath); } } } } public function getFileUrl(){ switch($this->reType){ case 'n': return $this->endFileName; break; case 'pn': return $this->savePath; break; case 'js': return ""; break; default: return $this->savePath; } } //获得新文件名 public function getNewName(){ return substr($this->tmpName,1,strrpos($this->tmpName,".")-1).'_'.mktime().'.'.$this->getFileExt(); } public function upStatus(){ //echo $this->errorInt; switch ($this->errorInt){ case 1: return '超过了文件大小php.ini中限制大小'; break; case 2: return '超过了文件大小MAX_FILE_SIZE 选项指定的值'; break; case 3: return '文件只有部分被上传'; break; case 4: return '没有文件被上传'; break; case 5: return '上传文件大小为0'; break; case 6: return '大小超出网站限制'; break; case 7: return '网站内没有指定这种上传类型'; break; case 8: return '系统不允许此类型文件'; case 9: return '创建目录失败!'; break; } } private function isAllow(){ $allow = array( 0 => array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png','application/x-zip-compressed','application/octet-stream'), 1 => array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'), 2 => array('application/x-zip-compressed','application/octet-stream'), 3 => array('','',''), 4 => array('','','') ); if($this->allowFile > count($allow)-1){ $this->errorInt = 7; //网站内没有指定这种上传类型 }else{ if(in_array($this->fileType, $allow[$this->allowFile])){ return true; }else{ return false; } } } public function getFileExt(){ //获得文件扩展名 return strtolower(substr($this->tmpName,strrpos($this->tmpName,".")+1)); } private function getFolder(){ //获得并自动创建相应文件夹 if(strpos('|rar|zip|7z|iso|','|'.$this->getFileExt().'|')>=0){ $_folder = 'rar'; }elseif(strpos('|gif|jpeg|jpg|png|bmp|pjpeg|psd|','|'.$this->getFileExt().'|')>=0){ $_folder = 'img'; }elseif(strpos('|rm|rmvb|avi|mp4|swf|flv|wmv|','|'.$this->getFileExt().'|')>=0){ $_folder = 'vide'; }elseif(strpos('|doc|txt|xls|mdb||','|'.$this->getFileExt().'|')>=0){ $_folder = 'doc'; }else{ $_folder = 'other'; } if(!file_exists($this->upFolder.$_folder)){ if(!mkdir($this->upFolder.$_folder)){ $this->errorInt = 9; //创建目录失败 } } return $_folder; } }
内容总结
以上是互联网集市为您收集整理的又花了半天时间写了个php上传类解决方法全部内容,希望文章能够帮你解决又花了半天时间写了个php上传类解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。