首页 > 编程语言 >thinkphp6文件上传自定义命名规则

thinkphp6文件上传自定义命名规则

时间:2022-11-25 21:55:42浏览次数:57  
标签:info sha1 hash 自定义 fileName file thinkphp6 上传

think官方自带的命名规则有三种

规则 描述
date 根据日期和微秒数生成
md5 对文件使用md5_file散列生成
sha1 对文件使用sha1_file散列生成

其中md5和sha1规则会自动以散列值的前两个字符作为子目录,后面的散列值作为文件名。

使用md5和sha1可以对文件进行重复上传判断,但是会把前两个字符作为目录名,而我想要的是目录名是日期时间命令,所以我改装了一下官方的

代码

public function upload(){
	$files = request()->file();
	$file = request()->file('file');
	if($file==null){
		exit(json_encode(array('code'=>1,'msg'=>'没有文件上传')));
	}
	try {
		validate(['file'=>'filesize:1000240|fileExt:jpg,png,gif,jpeg'])->check($files);
		$info = \think\facade\Filesystem::disk('public')->putFile('bews',$file,function () use ($file){
			switch ('hash') {
				case 'date':
					$fileName = date('YmdHis').rand(1000,9999);
					break;
				case 'hash':
					$hash = hash_file('sha1',$file);
					$fileName = date('Ymd'). DIRECTORY_SEPARATOR .$hash;
					break;
				default:
					// 这个可以自定义文件名,也可以使用生成的唯一ID
					//$fileName = uniqid();
					$fileName = '我是自定义的名字'; //不需要带文件后缀
					break;
			}
			return $fileName;
		});
	} catch (\think\exception\ValidateException $e) {
		exit(json_encode(array('code'=>1,'msg'=>$e->getMessage())));
	}
	$info = str_replace("\\","/",$info);
	$img = '/storage/'.$info;
	exit(json_encode(array('code'=>0,'data'=>$img,'url'=>$img)));
}

标签:info,sha1,hash,自定义,fileName,file,thinkphp6,上传
From: https://www.cnblogs.com/tn666/p/16926492.html

相关文章

  • 如何自定义一个注解
    一、创建注解1.1@Override注解的定义我们通过一些例子来说明,先看@Override的定义:@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public@interfac......
  • [JS DOM&BOM]自定义属性的操作
    [JSDOM&BOM]自定义属性的操作操作获取属性值element.属性获取内置元素的属性值(元素本身自带的属性)element.getAttribute(‘属性’);主要获得自定义的属性(标准)设置属性值e......
  • 自定义的Qt开关按钮
    这个控件比较简单,模仿现代应用程序常见的开关按钮绘制。通过这个案例你可以了解Qt动画的使用。在VS2015和Qt5.9上简单测试通过。下面是效果图:下面给出代码,头文件:class......
  • JPA自定义函数关键字
     SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!-阿里云开发者社区(aliyun.com)关 键 字示例方法JPQL语句AndfindByLastnameAnd......
  • WordPress编辑器支持Word自动上传
    ​ 1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况本文使用的后台是Java。前端为Jsp(前端都一样,后台如果语言不通得自己......
  • 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明​ ListView:在Android应用开发过程中属于最常用的系统组件之一,当然可能童鞋们问为什么会突然游戏开发中讲这个,呵呵,其......
  • 前后端分离 Ueditor + PHP 实现阿里云Oss上传
    首先去百度下载UeditorPHP(一般都是UTF-8版本)的当然首先要composer这样滴: "require":{"aliyuncs/oss-sdk-php":"~2.0.0",},解压后结构如下:第一步:创建OssInUe......
  • RT-Thread Studio 代码主题配色使用xml自定义
    RT-ThreadStudio代码主题配色自定义RT-ThreadStudio的主题配色是通过其自带的DevStyle插件配置的,其中有Workbenchtheme,Iconcolor,Editortheme,分别控制这Studio......
  • 小程序自定义导航栏
    1.导航栏包括状态栏和标题栏两部分,微信小程序自身的导航栏可以直接用;2.如果需要自定义导航栏"navigationStyle":"custom",只能用微信提供的jsapi获取,uni.getSystemInfo......
  • 【iOS-cocos2d-X 游戏开发之十二】自定义Cocos2dx摇杆(增强Joystick),增加摇杆跟随用
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明对于虚拟摇杆在游戏开发中必不可少,Android方面的是由Himi自己实现封装的,大家可以移步到这里查看详细实现机......