文档章节

PHP教程之php文件上传类

c
 czk19900520
发布于 2017/06/04 16:29
字数 642
阅读 5
收藏 0

/*

*千锋PHP独家

*/

class Upload { //保存路径 protected $savePath = './'; //日期目录 protected $datePath = true; //随机名字 protected $randName = true; //默认后缀 protected $extension = 'png'; //允许MIME protected $mimes = ['image/png','image/jpeg','image/gif']; //允许后缀 protected $suffixes = ['png','jpg','jpeg','gif']; //最大尺寸 protected $maxSize = 2000000; //错误代码 protected $errorNumber = 0; //错误信息 protected $errorMessage = '上传成功'; //上传信息 protected $uploadInfo; //文件名称 protected $pathName; public function __construct($options=null) { $this->setOption($options); }

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

public function setOption($options) { if (is_array($options)) { $keys = get_class_vars(__CLASS__); foreach ($options as $key => $value) { //在属性列表中才设置属性 if (in_array($key, $keys)) { $this->$key = $value; } } } } public function uploadFile($field) { //1、检查保存路径 if (!$this->checkSavePath()) { return false; } //2、检查上传信息 if (!$this->checkUploadInfo($field)) { return false; } //3、检查系统错误 if (!$this->checkUploadError()) { return false; } //4、检查自定义错误 if (!$this->checkAllowOption()) { return false; } //5、检车是否是上传文件 if (!$this->checkUploadFile()) { return false; } //6、拼接路径名 $this->joinPathName(); //7、移动上传文件 if (!$this->moveUploadFile()) { return false; } return true; } protected function checkSavePath() { if (!is_dir($this->savePath)) { $this->errorNumber = -1; $this->errorMessage = '保存路径不存在'; return false; } if (!is_writable($this->savePath)) { $this->errorNumber = -2; $this->errorMessage = '保存路径不可写'; return false; } $this->savePath = rtrim($this->savePath,'/') . '/'; return true; } protected function checkUploadInfo($field) { if (empty($_FILES[$field])) { $this->errorNumber = -3; $this->errorMessage = '没有'.$field.'相关上传信息'; return false; } $this->uploadInfo = $_FILES[$field]; return true; } protected function checkUploadError() { if ($this->uploadInfo['error'] == 0) { return true; } switch ($this->uploadInfo['error']) { case UPLOAD_ERR_INI_SIZE: $this->errorMessage = '超出了配置文件中设定文件大小'; break; case UPLOAD_ERR_FORM_SIZE: $this->errorMessage = '超出了MAX_FILE_SIZE的大小'; break; case UPLOAD_ERR_PARTIAL: $this->errorMessage = '只有部分文件被上传'; break; case UPLOAD_ERR_NO_FILE: $this->errorMessage = '没有文件被上传'; break; case UPLOAD_ERR_NO_TMP_DIR: $this->errorMessage = '没有找到临时文件夹'; break; case UPLOAD_ERR_CANT_WRITE: $this->errorMessage = '文件写入失败'; break; default: $this->errorMessage = '未知错误'; break; } $this->errorNumber = $this->uploadInfo['error']; return false; } protected function checkAllowOption() { if (!in_array($this->uploadInfo['type'],$this->mimes)) { $this->errorNumber = -4; $this->errorMessage = '不允许的MIME:'.$this->uploadInfo['type']; return false; } if (!in_array($this->extension,$this->suffixes)) { $this->errorNumber = -5; $this->errorMessage = '不允许的后缀:'.$this->extension; return false; } if ($this->uploadInfo['size'] > $this->maxSize) { $this->errorNumber = -6; $this->errorMessage = '超出了规定大小:'.$this->maxSize.'字节'; return false; } return true; } protected function checkUploadFile() { if (!is_uploaded_file($this->uploadInfo['tmp_name'])) { $this->errorNumber = -7; $this->errorMessage = '不是上传文件'; return false; } return true; } protected function joinPathName() { //路径 $this->pathName = $this->savePath; if ($this->datePath) { $this->pathName .= date('Y/m/d/'); if (!file_exists($this->pathName)) { mkdir($this->pathName,0777,true); } } //名字 if ($this->randName) { $this->pathName .= uniqid(); } else { $info = pathinfo($this->uploadInfo['name']); $this->pathName .= $info['filename']; } //后缀 $this->pathName .= '.' . $this->extension; } protected function moveUploadFile() { if (move_uploaded_file($this->uploadInfo['tmp_name'], $this->pathName)) { return true; } $this->errorNumber = -8; $this->errorMessage = '上传文件保存'; return false; } }

本文转载自:

共有 人打赏支持
c
粉丝 0
博文 10
码字总数 0
作品 0
私信 提问
PHP 如何阻止用户上传成人照片或者裸照

32402 在这份教程中,我们将会学习到如何组织用户通过PHP上传成人照片或者裸照. 示例 下载 我在phpclasses.org上面偶然发现一个很有用的,由Bakr Alsharif开发的可以帮助开发者基于皮肤像素点...

oschina
2014/04/28
26.7K
130
PHP.INI配置:文件上传功能配置教程

昨天分享了在PHP网站开发中如何在php.ini中配置实现session功能的PHP教程,今天继续分享在利用PHP实现文件上传功能时几点关键php.ini的配置。   说到在php.ini中的文件上传的配置,其实在之...

张志浩
2012/10/08
0
0
PHP MVC框架--SimplePHP

SimplePHP ===== 自己动手写PHP MVC框架 PHP的框架众多,对于哪个框架最好,哪个框架最烂,是否应该用框架,对于这些争论在论坛里面都有人争论,这里不做评价, 个人觉得根据自己需求,选中最...

sunny5156
2013/12/23
1K
0
PHP框架--CXPHP

PHP的框架众多,对于哪个框架最好,哪个框架最烂,是否应该用框架,对于这些争论在论坛里面都有人争论,这里不做评价, 个人觉得根据自己需求,选中最佳最适合自己MVC框架,并在开发中能够体...

sunny5156
2013/09/23
813
0
《CURL技术知识教程》系列分享专栏

《CURL技术知识教程》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201737.html 文章 PHP采集相关教程之一 CURL函数库 php中通过curl模拟登陆discuz论坛的实现...

开元中国2015
11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux之自定义命令

本人使用的是ubuntu系统,不喜欢建各种桌面快捷链接,但是每次启动个软件,去查找又麻烦,所以自定义了命令,来快捷的启动应用: 1、修改/etc/bash.bashrc,在文件末尾,加上如下List-1中的内...

克虏伯
8分钟前
0
0
linux基础

系统安全 sudo su chmod setfacl 进程管理 w top ps kill pkill pstree killall 用户管理 id usermod useradd groupad userdel 文件系统 mount umount fsck df du 网络应用 curl telnet mail......

关元
10分钟前
0
0
Caffe-源码分析(一)

CHECK_X函数,用于比较两个blob之间的值 CHECK_EQ(x,y)<<"x!=y",EQ即equation,意为“等于”,当x!=y时,函数打印出x!=y。 CHECK_NE(x,y)<<"x=y",NE即not equation,意为“不等于”,,...

Pulsar-V
10分钟前
0
0
三星Galaxy S10可能会配备TOF 3D摄像头

12月3日消息,据Phone Arena报道,三星Galaxy S10可能会配备TOF 3D摄像头。 Phone Arena报道称三星Galaxy S10一共有五颗摄像头(前置双摄+后置三摄),而5G版本的Galaxy S10后置四颗摄像头,...

问题终结者
33分钟前
9
0
fabric增删改查Mac

备份1.3版本,重新下载1.1版本到fabric文件夹 /opt/gopath/src/github.com/hyperledger/fabric -> /opt/gopath/src/github.com/hyperledger/fabric1.3 新建/opt/gopath/src/github.com/hype......

八戒八戒八戒
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部