单文件上传 - ThinkPHP 3.2

本文主要摘自官方ThinkPHP3.2彻底开发手册中文件上传这一小节的内容。
ThinkPHP文件上传操做使用Think\Upload 类,假设前面的表单提交到当前控制器的upload方法,下面是upload方法的简便实现代码:
 1 public function upload(){
 2     $upload = new \Think\Upload();// 实例化上传类
 3     $upload->maxSize = 3145728 ;// 设置附件上传大小
 4     $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类 型 
 5     $upload->savePath = './Public/Uploads/'; // 设置附件上传目录
 6     // 上传文件
 7     $info = $upload->upload();
 8     if(!$info) {// 上传错误提示错误信息
 9         $this->error($upload->getError());
10     }else{// 上传成功
11         $this->success('上传成功!');
12     }
13 }

 

除上述对Upload类进行动态赋值外,还能够利用数组对Upload类进行实例化传入赋值,以下所示:
1 $config = array(
2     'maxSize' => 3145728,
3     'savePath' => './Public/Uploads/',
4     'saveName' => array('uniqid',''),
5     'exts' => array('jpg', 'gif', 'png', 'jpeg'),
6     'autoSub' => true,
7     'subName' => array('date','Ymd'),
8  );
9 $upload = new \Think\Upload($config);// 实例化上传类

 

下表是Upload类支持的属性:
属性
描述
maxSize
int,默认0,文件上传的最大文件大小(以字节为单位),0为不限大小
rootPath
String,文件上传保存的根目录
savePath
String,文件上传保存的目录(相对于根目录)
saveName
String or Array,上传文件的保存规则,支持数组和字符串方式定义
saveExt String,上传文件的保存后缀,默认为使用原文件后缀
replace
boolean,默认false,是否覆盖同名文件
exts
String or Array,默认为空,容许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串
mimes
String or Array,默认为空,容许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串
autoSub
boolean,默认为true,自动使用子目录保存文件,默认为true
subName
String or Array,子目录建立方式,采用数组或者字符串方式定义
hash
boolean,默认为true,是否生成文件的hash编码
callback
检测文件是否存在回调,若是存在返回文件信息数组

返回上传以后的操做结果数组

设置好上传的参数后,就能够调用Think\Upload 类的upload方法进行附件上传,若是失败,返回 false,而且用getError方法获取错误提示信息;若是上传成功,就返回成功上传的文件信息数组。
 1 public function upload(){
 2   $upload = new \Think\Upload();// 实例化上传类
 3       $upload->maxSize = 3145728 ;// 设置附件上传大小
 4       $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
 5       $upload->savePath = './Public/Uploads/'; // 设置附件上传目录
 6       // 上传文件
 7       $info = $upload->upload();
 8       if(!$info) {// 上传错误提示错误信息
 9         $this->error($upload->getError());
10       }else{// 上传成功 获取上传文件信息
11         foreach($info as $file){
12               echo $file['savepath'].$file['savename'];
13             }
14   }
15 }

 

每一个文件信息记录了与上传文件相关的信息的数组,包括:
属性
描述
key
附件上传的表单名称
savePath
上传文件的保存路径
name
上传文件的原始名称
savename
上传文件的保存名称
size
上传文件的大小
type
上传文件的MIME类型
ext
上传文件的后缀类型
md5
上传文件的md5哈希验证字符串,仅当hash设置开启后有效
sha1
上传文件的sha1哈希验证字符串,仅当hash设置开启后有效
相关文章
相关标签/搜索