php 制作文件上传类
来源:互联网 发布:吉林市退休工资算法 编辑:程序博客网 时间:2024/06/18 07:34
上传文件需要注意的地方:
1:配置允许的后缀
2:配置允许的大小
3:随机生成目录
4:随机生成文件:
多文件上其实就是把得到的$_FILES进行foreach循环一下,举一反一吧!
1:配置允许的后缀
2:配置允许的大小
3:随机生成目录
4:随机生成文件:
5:良好的报错的支持
下面以单文件上传类为例,看代码:
class UpTool { protected $allowExt = 'jpg,jpeg,bmp,png'; protected $maxSize = 1; // 1M,M为单位 protected $errno = 0; // 错误代码 protected $error = array( 0=>'无错', 1=>'上传的文件超出系统限制', 2=>'上传文件的大小超出网页表单页面', 3=>'文件只有部分被上传', 4=>'没有文件被上传', 6=>'找不到临时文件夹', 7=>'文件写入不成功', 8=>'不允许的文件后缀', 9=>'文件大小超出类的允许范围', 10=>'创建目录失败', 11=>'移动失败' ); public function up($key) { if(!isset($_FILES[$key])) { return false; } $f = $_FILES[$key]; // 检验上传有没有成功 if($f['error']) { $this->errno = $f['error']; return false; } // 获取后缀 $ext = $this->getExt($f['name']); // 检查后缀 if(!$this->isAllowExt($ext)) { $this->errno = 8; return false; } // 检查大小 if(!$this->isAllowSize($f['size'])) { $this->errno = 9; return false; } // 通过,上传 // 创建目录 $dir = $this->mk_dir(); if($dir === false) { $this->errno = 10; return false; } // 生成随机文件名 $newname = $this->randName() . '.' . $ext; // 移动 if(!move_uploaded_file($f['tmp_name'],$dir . '/' . $newname)) { $this->errno = 11; return false; } // 走到这步,说明前面都通过了,则文件上传移动成功了 return true; } // 获取错误 public function getErr() { return $this->error[$this->errno]; } /* parm string $file return string $ext 后缀 */ protected function getExt($file) { $tmp = explode('.',$file); return end($tmp); } /* parm string $ext 文件后缀 return bool 防止大小写的问题 如JPG----strtolower()函数 */ protected function isAllowExt($ext) { return in_array(strtolower($ext),explode(',',$this->allowExt)); } // 检查文件大小 protected function isAllowSize($size) { return $size <= $this->maxSize * 1024*1024; } /* 按日期创建目录的方法 */ protected function mk_dir() { $dir = ROOT . 'data/images' . '/' . date('Ym/d'); // 判断目录是否存在 if(is_dir($dir) || mkdir($dir,0777,true)) { return $dir; } else { return false; } } /* 生成随机文件名 */ protected function randName($length=6) { $str = 'abcdefghijklmnpqrstuvwyz234556789'; // 随机打乱,并截取 return substr(str_shuffle($str),0,$length); }}
多文件上其实就是把得到的$_FILES进行foreach循环一下,举一反一吧!
0 0
- php 制作文件上传类
- 使用PHP制作单文件上传
- 使用PHP制作多文件上传
- PHP文件上传类
- php上传文件类
- php 文件上传类
- PHP 文件上传类
- php文件上传类
- php文件上传类
- php文件上传类
- php上传文件类
- php 文件上传类
- PHP 文件上传类
- PHP----文件上传类
- php文件上传类
- PHP文件上传类
- PHP 文件上传类
- php-文件上传类
- $parse/$eval和$observe/$watch如何区分
- HTML5音频
- 获取Spring ROOT ApplicationContext 的几种方式
- HTML5-localStorage应用
- EventBus源码分析(二):register方法保存事件的订阅者列表(2.4版本)
- php 制作文件上传类
- 键盘按键对应的数字
- iOS开发的一些奇巧淫技
- qxorm,开始
- BRE与ERE的差异
- iOS解决按钮短时间内多次点击只触发一次事件方法(开始写博客)
- vim基本命令备注
- TCP流量控制和拥塞控制
- 【HNOI2014】世界树