ThinkPHP--文件上传

本文介绍了ThinkPHP框架中实现文件上传的功能,包括Upload.class.php类的使用,支持单个和多个文件上传。通过控制器的upload方法来触发上传,并且详细说明了如何设置上传属性,如通过实例化方法和动态配置来调整参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

上传表单

//上传单个文件的表单模式
<form action="__CONTROLLER__/upload" enctype="multipart/form-data" method="post">
<input type="text" name="name"/>
<input type="file" name="photo"/>
<input type="submit" value="提交"/>
</form>
//上传多个文件,或者改为photo1、photo2、photo3即可。
<input type="file" name="photo[]"/>
<input type="file" name="photo[]"/>
<input 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'].'<br/>';
    echo $file['savepath'].'<br/>';
    echo $file['name'].'<br/>';
    echo $file['savename'].'<br/>';
    echo $file['size'].'<br/>';
    echo $file['type'].'<br/>';
    echo $file['ext'].'<br/>';
    echo $file['md5'].'<br/>';
    echo $file['sha1'].'<br/>';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值