PHP分享
您现在的位置是:博客主页 > Web教程 > PHP分享

Thinkphp3.2+Onethink缩列图的实现,单图上传实现多缩列图

By Dianthink on PHP分享 Time 2018-09-16 from:互联网 585人已围观
简介:    在站点中,文章列表或者多图上传,或者多图切换,为了网页加载数度更快,我们需要实现,大图再切换的时候显示,文章中方法来自onethink图片上传,PictureModel.class.php
    /**
     * 文件上传
     * @param  array  $files   要上传的文件列表(通常是$_FILES数组)
     * @param  array  $setting 文件上传配置
     * @param  string $driver  上传驱动名称
     * @param  array  $config  上传驱动配置
     * @return array           文件上传成功后的信息
     */
    public function upload($files, $setting, $driver = 'Local', $config = null){
        /* 上传文件 */
        $setting['callback'] = array($this, 'isFile');
$setting['removeTrash'] = array($this, 'removeTrash');
        $Upload = new Upload($setting, $driver, $config);
        $info   = $Upload->upload($files);
        $image = new \Think\Image(); 

        if($info){ //文件上传成功,记录文件信息
            foreach ($info as $key => &$value) {
                /* 已经存在文件记录 */
                if(isset($value['id']) && is_numeric($value['id'])){
                    continue;
                }
                /* 记录文件信息 */
                //大图
                $value['path'] = substr($setting['rootPath'], 1).$value['savepath'].$value['savename'];	//在模板里的url路径
                $image->open('./'.$value['path']);
                //中图
                //按照原图的比例生成一个最大为150*150的缩略图并保存为:'m'.$value['savename']
                $image->thumb(450, 450)->save('./'.substr($setting['rootPath'], 1).$value['savepath'].'middle_'.$value['savename']);
                $value['middle'] = substr($setting['rootPath'], 1).$value['savepath'].'middle_'.$value['savename'];
                //小图
                $image->thumb(150, 150)->save('./'.substr($setting['rootPath'], 1).$value['savepath'].'small_'.$value['savename']);
                $value['small'] = substr($setting['rootPath'], 1).$value['savepath'].'small_'.$value['savename'];
                //图片标题
                $title_array = explode('.', $value['name']);
                $value['title'] = $title_array[0];
                if($this->create($value) && ($id = $this->add())){
                    $value['id'] = $id;
                } else {
                    //TODO: 文件上传成功,但是记录文件信息失败,需记录日志
                    unset($info[$key]);
                }
            }
            return $info; //文件上传成功
        } else {
            $this->error = $Upload->getError();
            return false;
        }
    }

看到上面的代码,那我们只需要在picture表中增加middle,small两个字段即可。

如果有别的需求自行扩展即可。

相关文章
文章评论

( 0 )