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

thinkphp8之文件上传

  • 文件上传安装

命令:composer require topthink/think-filesystem

二.上传代码、接收代码

<form action="/index/index/index" enctype="multipart/form-data" method="post">

<input type="file" name="image" /> <br>

<input type="submit" value="上传" />

</form>

$file = request()->file('image');

接收到$file是一个对象,多图片是对象里面是多个图片数组

object(think\file\UploadedFile)#66 (9) {

  ["test":"think\file\UploadedFile":private]=>

  bool(false)

  ["originalName":"think\file\UploadedFile":private]=>

  string(35) "bcc2c9150d753eda616e11c090726a1.png"

  ["mimeType":"think\file\UploadedFile":private]=>

  string(9) "image/png"

  ["error":"think\file\UploadedFile":private]=>

  int(0)

  ["hash":protected]=>

  array(0) {

  }

  ["hashName":protected]=>

  NULL

  ["extension":protected]=>

  NULL

  ["pathName":"SplFileInfo":private]=>

  string(41) "C:\Users\j\AppData\Local\Temp\php21D4.tmp"

  ["fileName":"SplFileInfo":private]=>

  string(11) "php21D4.tmp"

}

三.图片上传
$savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file);

返回topic/20250625/fc51ff39bab056af7b1e8e33203243ba.png
路径是在public/storage/topic/20250625下面

四.上传配置
上传路径的配置config\filesystem.php里面,更改root和url属性可以更改存储的位置

      'public' => [

            // 磁盘类型

            'type'       => 'local',

            // 磁盘路径

            'root'       => app()->getRootPath() . 'public/storage',

            // 磁盘路径对应的外部URL路径

            'url'        => '/storage',

            // 可见性

            'visibility' => 'public',

        ],

例如:上传代码修改为$savename = \think\facade\Filesystem::disk('public')->putFile('sss', $file);
配置修改为: 'public' => [

            // 磁盘类型

            'type'       => 'local',

            // 磁盘路径

            'root'       => app()->getRootPath() . 'public/static',

            // 磁盘路径对应的外部URL路径

            'url'        => '/static',

            // 可见性

            'visibility' => 'public',

        ],
就会把图片上传到public/static/sss下面

  • \think\facade\Filesystem对象的用法
    位置:vendor/topthink/think-filesystem/src/Filesystem.php
    例如:disk方法加载配置里面的类型、getConfig方法获取配置等
  • 上传文件的验证

位置:vendor/topthink/think-validate/src/Validate.php
例如:方法fileSize验证文件大小(字节数),方法image验证文件宽高和类型(可以是数组或者逗号分割)等
使用示例: validate(['image'=>'fileSize:10240|fileExt:jpg|image:200,200,jpg'])

            ->check($files);

http://www.lqws.cn/news/519787.html

相关文章:

  • 用户体验驱动的3D设计:从功能实现到情感共鸣的设计升级
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • 数据结构 顺序表与链表
  • python的易家宜超市云购物系统
  • webman 利用tcp 做服务端 对接物联网
  • 使用 Spread.net将 Excel 中的文本拆分为多段
  • 注解+AOP+自动配置实现自定义starter
  • Java8 Stream流:Stream流的思想和获取Stream流
  • 深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐
  • 服务器不支持PUT,DELETE 的解决方案
  • python爬虫框架scrapy学习记录
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • 量学云讲堂2025朱永海慢牛开启第58期视频课程
  • 卡萨帝发布AI深度科技:实现从守护生活到守护文明的升级
  • Linux系统之Nginx反向代理与缓存
  • Aurora MySQL 3.05/3.06/3.07版本即将停用,全局数据库升级实战指南
  • 逆序对的数量
  • 基于MATLAB的BP神经网络的心电图分类方法应用
  • pyhton基础【16】函数进阶二
  • 仿Apple官网设计风格
  • HCIA-IP路由基础
  • 鸿蒙OH南向开发 轻量系统内核(LiteOS-M)【Shell】
  • 实测对比:用 Lynx 做网页,效率比传统工具提升 270% 的底层逻辑
  • 【Oracle学习笔记】4.索引(Index)
  • 【大厂机试题解法笔记】可以组成网络的服务器
  • FPGA基础 -- Verilog 格雷码(Gray Code)计数器设计与原理解析
  • 开疆智能CCLinkIE转ModbusTCP网关连接脉冲计数器配置案例
  • MySQL之存储过程详解
  • 自动化测试--Appium和ADB及常用指令