thinkphp3.2上传图片如何进行封装?

2025-03-23 19:09:41
推荐回答(1个)
回答1:

把你的上传部分写在function.php或者继承的父级控制器就行。

如:

/*文件上传*/
function _uploads($savePath='/Picture/'){
    $upload = new \Think\Upload();
    $upload->maxSize = 3*1024*1024;// 设置附件上传大小
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg', 'bmp');// 设置附件上传类型
    $upload->autoSub = true;//自动子目录保存文件
    $upload->subName = array('date','Y-m-d');//子目录创建方式
    $upload->saveName = array('uniqid','');//上传文件命名规则,唯一性
    $upload->rootPath = './Uploads/'; // 设置附件上传根目录
    $upload->savePath = $savePath; // 设置附件上传(子)目录
    // 上传文件
    $info = $upload->upload();
    return $info;
}

//此处方法调用
public function upFile(){
    $file = _uploads('/Picture/');//里面可填写子目录文件路径,支持多文件上传
    if($file){
        $img = M('img');
        //...此处添加所需逻辑处理
        foreach ($file as $v) {
            //...此处添加所需逻辑处理
            //拼接图片地址用于保存数据库
            $dataImg['url'] = '/Uploads' . $v['savepath'] . $v['savename'];//根据需求拼接路径,也可在/Uploads前拼成根路径加上项目名称
            $img->add($dataImg);
        }
    }

}