Thinkphp 上传文件(教你用最少代码实现)

130 阅读1分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、前端示例代码

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

2、控制器接收代码

public function upload(){
    // 获取表单上传文件 例如上传了001.jpg
    $file = request()->file('image');
    // 接收示例一
    // 上传到本地服务器   默认上传到runtime/storage目录下面生成以当前日期为子目录
    $fileName = \think\facade\Filesystem::putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5');
    //接收示例二
    // 如果是多应用的话,上传根目录默认是runtime/index/storage,如果你希望上传的文件是可以直接访问或者下载的话,可以使用public存储方式。
    $fileName = \think\facade\Filesystem::disk('public')->putFile( 'image', $file,'命名规则:如md5,date,sha1三种选其一,默认md5');

}

3、上传验证

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

 4、总结

    Thinkphp6.0的上传省去了一些不必要的步骤 让上传更加便捷了  如果大家还有疑问可以参考Thinkphp6.0的官方文档