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

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());}

相关文章:

  • CAP理论:分布式系统的权衡
  • K8S - 蓝绿发布实战 - Argo Rollouts 零停机方案解析
  • MCP 工具速成:npx vs. uvx 全流程安装指南
  • macOS Arduino IDE离线安装ESP8266支持包
  • Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表
  • k8s术语之secret
  • SLAM文献之KernelGPA: A Globally Optimal Solution to Deformable SLAM in Closed-form
  • 宏观经济2
  • 自学嵌入式 day 16-c语言-第10章 指针
  • 基于redis的定时状态更新
  • 【c++】继承详解
  • UOS安装AMD显卡驱动
  • AI优化高频PCB信号完整性:猎板PCB的技术突破与应用实践
  • PCIe控制器介绍(二)
  • RDD实现单词计数
  • TDengine 在新能源行业应用
  • 华为网路设备学习-21 路由过滤(filter-policy)
  • C++ STL入门:set 集合容器
  • TDEngine 与 Grafana
  • Unicode字符集字符流
  • 湖南省职业病防治院通报3岁女童确诊“铊中毒”:去年病例,编辑误写为“近日”
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 无人机穿越大理千年古塔落券洞内,涉事“飞手”被行拘10日
  • 家庭相册㉙在沪打拼25年,我理解了父母清晨去卖蜜饯的辛苦
  • 绿城约13.93亿元竞得西安浐灞国际港港务片区地块,区内土地楼面单价首次冲破万元
  • 观察|印巴交火开始升级,是否会升级为第四次印巴战争?