当前位置: 首页 > backend >正文

15.thinkphp的上传功能

一.上传功能

1. 如果要实现上传功能,首先需要建立一个上传表单,具体如下:

<form action="http://localhost/tp6/public/upload"enctype="multipart/form-data" method="post"><input type="file" name="image"><input type="submit" value="确定"></form>

2. 创建一个控制器upload.php,并使用Request::file来获取上传数据:

//获取表单的上传数据
$file = Request::file('image');

然后创建一个控制器upload.php:

3. 使用Filesystem::putfile()方法,来实现上传文件,并写入指定目录;

默认保存到storage目录下。

4. 上传后返回的结果$info,可以输出当前上传文件的地址;

//目录在runtime/storage/toppic/时间/文件
$info = Filesystem::putFile('topic', $file);

默认保存到storage目录下。

5. 如果想更改上传文件的默认配置,在config/filesystem.php中配置;

'root' => app()->getRuntimePath() . 'storage',

 

6. 默认规则下,上传的文件是以日期和微秒生成的方式:date;

7. 生成的规则还支持另外两种方式:md5和sha1;

$info = Filesystem::putFile('topic', $file, 'md5');

但是这样子看多难受,直接用日期更好

8. 批量上传,使用image[]作为名称,并使用foreach()遍历上传;

<input type="file" name="image[]"><input type="file" name="image[]"><input type="file" name="image[]">$files = Request::file('image');$info = [];foreach ($files as $file) {$info[] = Filesystem::putFile('topic', $file);}dump($info);

9. 结合之前的验证器,我们写一个针对upload的独立验证;

//上传图片文件
$file = Request::file('image');//编写上传规则,必须是上传文件,必须是jpg.png.gif后缀
$validate = Validate::rule(['image'=> 'file|fileExt:jpg,png,gif']);//得到上传文件和规则比对
$result = $validate->check(['image'=>$file]);//通过输出地址,否则输出错误
if ($result) {$info = Filesystem::putFile('topic', $file);dump($info);} else {dump($validate->getError());}

http://www.xdnf.cn/news/4883.html

相关文章:

  • 基于redis的定时状态更新
  • SpringBoot指定项目层日志记录
  • 广东省省考备考(第五天5.8)—言语:逻辑填空(每日一练)
  • 2025 EAU UTUC指南学习笔记③:诊断策略精读——从症状到活检,如何科学判断治疗路径?
  • nextjs站点地图sitemap添加
  • Don’t Mesh with Me 论文阅读 brep llm
  • YY/T 1732-2020口腔曲面体层X射线模体
  • 系统思考助力富维东阳
  • ui生成提示词
  • ROP链-BUUCTF-cmcc_simplerop(ret2syscall)
  • 【JS逆向基础】面向对象
  • Spring AI 集成 DeepSeek V3 模型开发指南
  • Dify工作流接收API请求带文件(有小坑)
  • Android开发补充内容
  • python作业5
  • 基于大数据分析的Facebook隐私保护策略
  • 沃伦森电容器支路阻抗特性监控系统 电容器组智能健康管理专家
  • 【Linux】module list的用法
  • 大模型原理初步了解
  • 软件工程之形式化说明技术深度解析
  • Vulfocus靶场-文件上传-1
  • 通义灵码编码插件支持MCP
  • 从0到1构建前端监控系统:错误捕获、性能采集、用户体验全链路追踪实战指南SDK实现
  • Vue.js Watch 侦听器:深入理解与应用
  • 键盘弹起导致页面上移
  • C语言—指针2
  • git命令积累(个人学习)
  • 3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()
  • HTTP学习
  • 机器学习实操 第二部分 神经网路和深度学习 第17章 编码器、生成对抗网络和扩散模型