THINKPHP6 自定义文件上传命名规则
先看看THINKPHP默认的文件名生成方法
/** * 自动生成文件名 * @access public * @param string|\Closure $rule * @return string */ public function hashName($rule = ''): string { if (!$this->hashName) { if ($rule instanceof \Closure) { $this->hashName = call_user_func_array($rule, [$this]); } else { switch (true) { case in_array($rule, hash_algos()): $hash = $this->hash($rule); $this->hashName = substr($hash, 0, 2) . DIRECTORY_SEPARATOR . substr($hash, 2); break; case is_callable($rule): $this->hashName = call_user_func($rule); break; default: $this->hashName = date('Ymd') . DIRECTORY_SEPARATOR . md5(microtime(true) . $this->getPathname()); break; } } } return $this->hashName . '.' . $this->extension(); }
THINKPHP默认提供了三种上传命名规则:
规则 | 描述 |
---|---|
date | 根据日期和微秒数生成 |
md5 | 对文件使用md5_file散列生成 |
sha1 | 对文件使用sha1_file散列生成 |
实现方法
public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 接收示例一 // 上传到本地服务器 默认上传到runtime/storage目录下面生成以当前日期为子目录 $fileName = \think\facade\Filesystem::putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5'); //接收示例二 // 如果是多应用的话,上传根目录默认是runtime/index/storage,如果你希望上传的文件是可以直接访问或者下载的话,可以使用public存储方式。 $fileName = \think\facade\Filesystem::disk('public')->putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5'); }
可以通过自定义函数或闭包函数实现自定义上传文件名
闭包方式:
$FilePath = \think\facade\Filesystem::disk('public')->putFile($path, $file,function() use($file){ return date('Y/m/d') . DIRECTORY_SEPARATOR . md5(microtime(true) . $file->getPathname()); });
自定义函数
array('date', 'Ymd'), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组 $FilePath = \think\facade\Filesystem::disk('public')->putFile($path, $file,array('date', 'Ymd'));
评论(0)

友情提示:评论成功赠送5积分(每日前3次),刷评论扣8积分!
相关内容
这些是最新的
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- 自动发短信或者拨打电话的挪车源码 【html源码】
- 国内开源镜像站点汇总
- THINKPHP6 自定义文件上传命名规则
- JS实现检测目标网址是否可访问 网址存活检测
- 九品源码 素材站源码 源码资源站 源码交易网整站源码 THINKPHP5.1内核
- 百家姓 PHP+MYSQL 百家姓/万家姓 SQL文件+PHP演示程序
- iFormatTool 代码高亮差谷歌浏览器插件
- 一套卡通人物头像 共200个 可用来做个人头像
- 简单精美的html5响应式通用手机登录界面模板
- HTML5五子棋游戏源码,带AI,可本地双人
- 绿色大气运动健身科技教育部重点实验室体育学校网站模板
- HTML5在线手写签名 可添加背景图像
- layuiAdmin后台管理模板 Iframe版
- 校园疫情防控进出登记管理系统thinkphp源码
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- layuiAdmin后台管理模板 Iframe版
- 响应式后台网站模板 - AMA.ADMIN
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码