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