当前位置: 首页 > 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);

相关文章:

  • 广州小企业网站制作百度网站打开
  • 网站建设页面免费建站的网站
  • 聊城手机网站服务江苏seo推广
  • 有什么做树状图的网站推广服务公司
  • 网站做担保交易平台企业管理咨询
  • 建网站需要身份证吗网站关键词优化案例
  • 永磁同步电机无速度算法--基于同步旋转坐标系锁相环的滑模观测器
  • Matlab里的默认配色推荐
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • Node.js-fs模块
  • FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘
  • 多模态AI:让机器像人一样“全感官”理解世界
  • Vue计算属性与监视属性
  • 【数字后端】- 什么是天线效应(Antenna Effect)?如何修复?
  • 黑马python(十六)
  • 【DataWhale组队学习】AI办公实践与应用-数据分析
  • 3 大语言模型预训练数据-3.2 数据处理-3.2.2 冗余去除——2.SimHash算法文本去重实战案例:新闻文章去重场景
  • SpringBoot(九)--- HttpClient、Spring Cache、Spring Task、WebSocket
  • 【图论题典】Swift 解 LeetCode 最小高度树:中心剥离法详解
  • Git知识梳理常见问题
  • 04-html元素列表-表格-表单
  • 【爬虫入门】CSS样式偏移混淆文本内容的解析与爬取案例解析
  • 水水水水水水水水水水水水水水水水水水水
  • Alembic迁移系统初始化实战教程
  • Day.42
  • 【嘉立创EDA】PCB 如何按板框轮廓进行铺铜