TP6图片上传例子

浏览537

TP6的文件上传相较于之前的版本有些变化,用法变了,也相对的更灵活了。以下是简单的图片上传。

image.png


有问题可以在下面留言


前端代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="img" /> <br> 
<input type="submit" value="上传" /> 
</form> 
</body>
</html>

配置文件:filesystem.php

<?php

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

后端代码:

验证参数说明

fileSize上传文件的最大字节

fileExt文件后缀,多个用逗号分割或者数组

fileMime文件MIME类型,多个用逗号分割或者数组

image验证图像文件的尺寸和类型


    public function upload(){
       if(request()->isPost()){
         // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('img');
        try {
            // 使用验证器验证上传的文件
            validate(['file' => [
                // 限制文件大小(单位b),这里限制为4M
                'fileSize' => 4 * 1024 * 1024,
                // 限制文件后缀,多个后缀以英文逗号分割
                'fileExt'  => 'gif,jpg,png'
            ]])->check(['file' => $file]);
            // 上传到本地服务器
             $savename = \think\facade\Filesystem::disk('public')->putFile('img', $file);
             if($savename){
                // 拼接路径
                $path=\think\Facade\Filesystem::getDiskConfig('public', 'url').str_replace('\\', '/', $savename);
                $data['img']=$path;
                $res=Db::name('message')->order('id', 'desc')->insert($data);
                if($res){
                    return json(['code'=>200,'msg'=>'添加成功']);
                }else{
                    return json(['code'=>500,'msg'=>'添加失败']);
                }
             }
             // echo $savename;
        } catch (think\exception\ValidateException $e) {
            // echo $e->getMessage();
            return json(['code'=>500,'msg'=>$e->getMessage()]);
        }
       }
       return View::fetch();
    }



  • 暂无任何回答