ThinkPHP--文件上传

文件上传功能,即Upload.class.php。上传类可以提供单个文件上传、多个文件上传等方式。

上传表单

//上传单个文件的表单模式
"__CONTROLLER__/upload" enctype="multipart/form-data" method="post"> type="text" name="name"/> type="file" name="photo"/> type="submit" value="提交"/>
//上传多个文件,或者改为photo1、photo2、photo3即可。
type="file" name="photo[]"/>
type="file" name="photo[]"/>
type="file" name="photo[]"/>

在控制器里创建一个upload方法,实现上传功能:

//上传功能
public function upload(){
    $upload = new Upload();  //实例化上传类
    $upload->maxSize = 3145728;  //设置上传大小,字节
    $upload->exts = array('jpg','gif','png','jpeg'); //限定后缀(文件格式)
    $upload->savePath = './'; //保存在根目录Uploads(如果没有则需要在根目录下手动创建)下
    $info = $upload->upload();  //执行上传方法(赋值给变量用于判断成功或失败)
    if(!$info){
        $this->error($upload->getErroe());  //报错
    }else{
        $this->success('上传成功');  //成功
}
}

文件上传

在上传操作之前,我们可以对上传的属性进行一些设置,Upload类支持的属性:

.
参数 描述
maxSize 文件上传的最大文件大小(以字节为单位),0为不限大小
rootPath 文件上传保存的根路径
savePath 文件上传的保存路径(相对于根路径)
saveName 文件上传的保存规则,支持数组和字符串方式定义
saveExt 文件上传的保存后缀,不设置则使用原文件后缀
replace 存在同名文件是否覆盖,默认为false
exts 允许上传的文件后缀(留空为不限制),使用数组或者逗号分割的字符串设置,默认为空
mimes 允许上传的文件类型(留空为不限制),使用数组或者逗号分割的字符串设置,默认为空
autoSub 自动使用子目录保存上传文件,默认为true
hash 是否生成文件的hash编码,默认为true
callback 检测文件是否存在回调,如果存在返回文件信息数组

参数配置有两种方式(大多数类都支持两种方式):
一、实例化方法配置:

$config = array(
    'maxSize'=>3145728,
    'exts'=>array('jpg','gif','png','jpeg'),
    'savePath'=>'./',
);
$upload = new Upload($config);

二、动态配置:

$upload = new Upload();
$upload->maxSize = 3145728;
$upload->exts = array('jpg','gif','png','jpeg');
$upload->savePath='./';


//设置文件名
$upload->saveName = '123';  //容易重名,不推荐使用。
//限制上传文件类型
$upload->mimes=array('image/jpeg');
//设置同名覆盖
$upload->replace = true;  //不推荐打开
//不设置子目录
$upload->sutoSub = false;  //不推荐关闭

//设置子目录格式
$upload->subName = array('date','Ymd');
//不生成hash编码
$upload->hash = false;
//子目录采用函数返回
$upload->subName='get_user_id';
//在function.php中创建一个函数
function get_user_id(){
    return rand();
}

//获取上传文件信息
foreach($info as $file){
    echo $file['savepath'].$file['savename'];
}

$file数组可以使用的属性

属性 描述
key 附件上传的表单名称
savepath 上传文件的保存路径
name 上传文件的原始名称
savename 上传文件的保存名称
size 上传文件的大小
type 上传文件的MIME类型
ext 上传文件的后缀类型
md5 上传文件的md5哈希验证字符串,仅当hash设置开启后有效
sha1 上传文件的sha1哈希验证字符串,仅当hash设置开启后有效
//获取上传文件信息
foreach($info as $file){
    echo $file['key'].'
'
; echo $file['savepath'].'
'
; echo $file['name'].'
'
; echo $file['savename'].'
'
; echo $file['size'].'
'
; echo $file['type'].'
'
; echo $file['ext'].'
'
; echo $file['md5'].'
'
; echo $file['sha1'].'
'
; }

你可能感兴趣的:(TP3.2.3)