Thinkphp5 自定义上传文件名
这几天在做tp5的上传文件模块,项目需求是要把文件名在上传之后修改为 用户名+原文件名的组合形式,在网上找了一会儿发现好像没有类似的文章。。。只好自己去研究研究了。
之前查看过看云上面的官方手册,文件上传那一块真的是讲的含糊,对于我们这个为了项目自学tp5的大学生来说到处都是知识盲区啊。
Tp5文件相关操作模块都在 thinkphp\library\think\File.php里面,我们找到第335行附近的move()函数
/**
* 移动文件
* @access public
* @param string $path 保存路径
* @param string|bool $savename 保存的文件名 默认自动生成
* @param boolean $replace 同名文件是否覆盖
* @return false|File
*/
public function move($path, $savename = true, $replace = true){
上面写的 $savename 是一个String或者bool类型,所以直接传入文件名或者文件名变量就行了
在自己的控制器代码里写上:
$saveName = 'Tom';
$info = $file->move('./Upload',$saveName,false);
再上传一次就可以看到上传的文件已经被修改为了Tom。
存进数据库的名字也是Tom,说明文件名是完全改了的。
现在的需求是修改名字为:用户id_文件名,但是我获取文件的方法是使用request获取:
$file = request()->file('files');
研究了半天发现好像没有可以在存入服务器之前获取到 $file的文件名,我的解决办法是:在前端的form表单添加一个hidden的隐藏输入框:
<input type="hidden" name="fileName" id="file_name">
通过js获取到要上传的文件名,再把隐藏输入框的内容用js修改为获取到的文件名:
var fileinfo = document.getElementById('files').files[0];
//js获取文件名字
var name = fileinfo.name;
var fileN = document.getElementById('file_name');
fileN.value = name;
这样再提交文件的时候就可以把文件名传到后台。
由此可得,需要什么功能直接去框架的文件里面去找,感觉比看手册详细多了!
Thinkphp5 自定义上传文件名的更多相关文章
- ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名
今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我 ...
- SharePoint 2010 ——自定义上传页面与多文件上传解决方案
最近项目遇到一个很麻烦的问题,原以为很容易解决,结果搞了那么久,先开个头,再慢慢写 SharePoint 2010 ——自定义上传页面与多文件上传解决方案 1.创建Sharepoint空白项目,创建应 ...
- Django 批量保存图片文件 自定义上传方法
1.前端通过formData的方式批量增加图片或文件 for (var i = 0; i < form_img_list.length; i++) { formData.append('imag ...
- Thinkphp5图片上传正常,音频和视频上传失败的原因及解决
Thinkphp5图片上传正常,音频和视频上传失败的原因及解决 一.总结 一句话总结:php中默认限制了上传文件的大小为2M,查找错误的时候百度,且根据错误提示来查找错误. 我的实际问题是: 我的表单 ...
- Django(十九)文件上传:图片上传(后台上传、自定义上传)、
一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings ...
- Dynamics CRM 自定义上传附件的图片悬浮层显示
CRM中的附件是以流的形式保存在了数据库中,这样做的一个坏处是一旦系统运行时间久,附件上传的多了势必会导致数据库极速扩大,即影响系统的运行效率也对后期的迁移维护带来了不必要的麻烦.所以很多的客户都会要 ...
- UI组件--element-ui--Upload多组件自定义上传
需求: 提交详细信息的表单, 并上传对应图片(如下图), 后台接口要求表单数据和图片需要一次上传完成.. 分析: 实际上, 每个element-ui Upload组件都应发送一次请求, 很明显不符合我 ...
- 兼容IE8的flash上传框架"uploadify"自定义上传按钮样式的办法
(uploadify版本:3.2.1 ) 因为公司业务的原因,所做的项目需要兼容IE8,因此做的上传插件无奈选择的是基于flash的uploadify. 由于是基于flash的,所以使用过程中,难以给 ...
- el-upload自定义上传文件,并携带其余参数,且action不报错
用el-upload组件自定义上传按钮,并携带其余参数,且必传参数action 不报错 <template> <el-col :span="6" :mode=&q ...
随机推荐
- axios拦截器使用方法
vue中axios获取后端接口数据有时候需要在请求开始时显示loading,请求结束后隐藏loading,这时候到每次调接口时都写上有点繁琐,有时候还会漏写. 这时候axios的拦截器就起了作用,我们 ...
- JavaWeb_(Spring框架)在Struts+Hibernate框架中引入Spring框架
spring的功能:简单来说就是帮我们new对象,什么时候new对象好,什么时候销毁对象. 在MySQL中添加spring数据库,添加user表,并添加一条用户数据 使用struts + hibern ...
- Leetcode题目102.二叉树的层次遍历(队列-中等)
题目描述: 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 ...
- buff/cache占用过高的问题
工作记录 > /proc/sys/vm/drop_caches 默认是0,不清除缓冲区缓存和页面缓存 可用值 0 到 3 值越高系统上的程序会跑起来越慢 free -m 蛋疼的是这只是一次性的, ...
- 0ctf-Wallbreaker Easy复现
补坑+1. 有预留的后门,并且给了phpinfo,因此可以从phpinfo中先搜集一波信息: 这里禁用了很多命令执行的函数,所以应该要bypass_disablefunction,先读一下flag在哪 ...
- 【软件工程】Alpha事后诸葛亮
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 参考邹欣老师的问题模板进行总结思考 一.设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的 ...
- Unity通过世界坐标系转换到界面坐标位置
public static Vector2 WorldToCanvasPoint(Canvas canvas, Vector3 worldPos) { Vector2 pos; RectTransfo ...
- css3_1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决MySQL5.7输入show databases 不显示内容的问题
当出现输入其他命令不显示内容的时候,请检查输入语句的后面是否带上了英文输入下的分号,同时别忘了database后面还有个s. 5. 删除数据库drop database XX(数据库名);
- python 3.6闭包+循环获取出字典中所有的值并保存在list中
def list_test(): list1=[] def list_all_dict(a): #检测字段类型 if isinstance(a,dict): for x in range(len(a) ...