本文实例讲述了TP3.2.3框架文件上传操作。分享给大家供大家参考,具体如下:
上传表单
在ThinkPHP中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:
<form action="__URL__/upload" enctype="multipart/form-data" method="post" > <input type="text" name="name" /> <input type="file" name="photo" /> <input type="submit" value="提交" > </form>
注意,要使用上传功能 你的表单需要设置 enctype="multipart/form-data"
多文件上传支持
如果需要使用多个文件上传,只需要修改表单,把
<input type='file' name='photo'>
改为
<input type='file' name='photo1'> <input type='file' name='photo2'> <input type='file' name='photo3'>
或者
<input type='file' name='photo[]'> <input type='file' name='photo[]'> <input type='file' name='photo[]'>
两种方式的多附件上传系统的文件上传类都可以自动识别。
上传操作
ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:
public function upload(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->success('上传成功!');
}
}
上传类对图片文件的上传安全做了支持,如果企图上传非法的图像文件,系统会提示 非法图像文件。 为了更好的使用上传功能,建议你的服务器开启finfo模块支持
上传参数
在上传操作之前,我们可以对上传的属性进行一些设置,Upload类支持的属性设置包括:
| 属性 | 描述 | 
|---|---|
| maxSize | 文件上传的最大文件大小(以字节为单位),0为不限大小 | 
| rootPath | 文件上传保存的根路径 | 
| savePath | 文件上传的保存路径(相对于根路径) | 
| saveName | 上传文件的保存规则,支持数组和字符串方式定义 | 
| saveExt | 上传文件的保存后缀,不设置的话使用原文件后缀 | 
| replace | 存在同名文件是否是覆盖,默认为false | 
| exts | 允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空 | 
| mimes | 允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空 | 
| autoSub | 自动使用子目录保存上传文件 默认为true | 
| subName | 子目录创建方式,采用数组或者字符串方式定义 | 
| hash | 是否生成文件的hash编码 默认为true | 
| callback | 检测文件是否存在回调,如果存在返回文件信息数组 | 
