Thinkphp文件上传

本文详细介绍了ThinkPHP的文件上传操作,包括上传参数设置、命名规则、子目录保存和上传驱动选择。通过实例化和动态赋值设置上传参数,利用upload和uploadOne方法处理单文件或多文件上传,同时讲解了如何避免文件命名冲突和使用自定义函数生成唯一文件名。此外,还介绍了子目录保存功能以及如何切换不同上传驱动,如Ftp。
摘要由CSDN通过智能技术生成

在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>

上传操作

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->rootPath = './Uploads/'; // 设置附件上传根目录
  6. $upload->savePath = ''; // 设置附件上传(子)目录
  7. // 上传文件
  8. $info = $upload->upload();
  9. if(!$info) { // 上传错误提示错误信息
  10. $this->error($upload->getError());
  11. }else{ // 上传成功
  12. $this->success('上传成功!');
  13. }
  14. }

上传参数

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

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

上面的属性可以通过两种方式传入:

实例化传入

我们可以在实例化的时候直接传入参数数组,例如:

 
 
 
  1. $config = array(
  2. 'maxSize' => 3145728,
  3. 'rootPath' => './Uploads/',
  4. 'savePath' => '',
  5. 'saveName' => array('
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值