- 文件上傳安裝
命令: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);