thinkphp6-本地文件上传

用法

配置文件 config/filesystem.php

<?php

return [
    // 默认磁盘
    'default' => env('filesystem.driver', 'local'),
    // 磁盘列表
    'disks'   => [
        'local'  => [
            'type' => 'local',
            'root' => app()->getRuntimePath() . 'storage',
        ],
        'public' => [
            // 磁盘类型
            'type'       => 'local',
            // 磁盘路径
            'root'       => app()->getRootPath() . 'public/storage',
            // 磁盘路径对应的外部URL路径
            'url'        => '/storage',
            // 可见性
            'visibility' => 'public',
        ],
        // 更多的磁盘配置信息
    ],
];

控制器 app/controller/Index.php

<?php
namespace app\controller;


class Index
{
    public function index()
    {
        return view('index');
    }

    public function upload(){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('image');
        // 上传到本地服务器
        $savename = \think\facade\Filesystem::putFile( 'topic', $file);
        //$savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file);
        echo $savename;
    }
}

视图 app/view/index/index.html

<form action="/index/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="image" /> <br>
    <input type="submit" value="上传" />
</form> 

测试(上传图片,查看runtime/storage下是否生成对应文件)

http://127.0.0.1:8000/index

多文件上传

视图

<form action="/index/index/upload" enctype="multipart/form-data" method="post">
<input type="file" name="image[]" /> <br> 
<input type="file" name="image[]" /> <br> 
<input type="file" name="image[]" /> <br> 
<input type="submit" value="上传" /> 
</form>

控制器

public function upload(){
    // 获取表单上传文件
    $files = request()->file('image');
    $savename = [];
    foreach($files as $file){
        $savename[] = \think\facade\Filesystem::putFile( 'topic', $file);
    }
}

验证

public function upload(){
    // 获取表单上传文件
    $files = request()->file();
    try {
        validate(['image'=>'fileSize:10240|fileExt:jpg|image:200,200,jpg'])
            ->check($files);
        $savename = [];
        foreach($files as $file) {
            $savename[] = \think\facade\Filesystem::putFile( 'topic', $file);
        }
    } catch (\think\exception\ValidateException $e) {
        echo $e->getMessage();
    }
}

验证参数

验证参数    说明
fileSize    上传文件的最大字节
fileExt    文件后缀,多个用逗号分割或者数组
fileMime    文件MIME类型,多个用逗号分割或者数组
image    验证图像文件的尺寸和类型
上一篇:thinkphp6---一对一关联


下一篇:thinkphp6事件监听和触发多个事件