PHP.TP框架下商品项目的优化2-图片优化

图片存储、上传、显示优化

1、图片路径写进配置文件,当路径有变动时【因业务扩大,服务器存储图片空间不足等】,只需修改配置文件,而不用修改代码

2、封装显示、上传、删除函数,实现代码重用

  【可类比其他类似的操作】

1、在/Common/Common/Conf/conf.php中,写入图片配置  C()

2、把显示图片showImage()的功能封装到/Common/Common/function.php中

//显示图片
    function showImage($url, $width = '', $height = '')
    {
        $ic = C('IMAGE_CONFIG');    //读取配置文件
        if($width)
            $width = "width='$width'";    //显示宽度(html代码)
        if($height)
            $height = "height='$height'";
        echo "<img $width $height src='{$ic['viewPath']}$url' />";
    }
showImage()

  在页面中显示图片

3、把上传图片uploadOne()的功能封装到/Common/Common/function.php中 

function uploadOne($imgName, $dirName, $thumb = array())
{
    // 上传LOGO
    if(isset($_FILES[$imgName]) && $_FILES[$imgName]['error'] == 0)
    {
        $ic = C('IMAGE_CONFIG');
        $upload = new \Think\Upload(array(
            'rootPath' => $ic['rootPath'],
            'maxSize' => $ic['maxSize'],
            'exts' => $ic['exts'],
        ));// 实例化上传类
        $upload->savePath = $dirName . '/'; // 图片二级目录的名称
        // 上传文件 
        // 上传时指定一个要上传的图片的名称,否则会把表单中所有的图片都处理,之后再想其他图片时就再找不到图片了
        $info   =   $upload->upload(array($imgName=>$_FILES[$imgName]));
        if(!$info)
        {
            return array(
                'ok' => 0,
                'error' => $upload->getError(),
            );
        }
        else
        {
            $ret['ok'] = 1;
            $ret['images'][0] = $logoName = $info[$imgName]['savepath'] . $info[$imgName]['savename'];
            // 判断是否生成缩略图[$thumb数组存储尺寸]
            if($thumb)
            {
                $image = new \Think\Image();
                // 循环生成缩略图
                foreach ($thumb as $k => $v)
                {
                    $ret['images'][$k+1] = $info[$imgName]['savepath'] . 'thumb_'.$k.'_' .$info[$imgName]['savename'];
                    // 打开要处理的图片
                    $image->open($ic['rootPath'].$logoName);
                    $image->thumb($v[0], $v[1])->save($ic['rootPath'].$ret['images'][$k+1]);
                }
            }
            return $ret;
        }
    }
}

   GoodsModel.class.php添加商品时_before_insert()使用

4、删除图片函数deleteImage()

function deleteImage($image = array())
{
    $savePath = C('IMAGE_CONFIG');
    foreach ($image as $v)
    {
        unlink($savePath['rootPath'] . $v);
    }
}

   GoodsModel.class.php删除商品时_before_delete()使用

 

 

 

 

 

posted on 2017-06-06 17:37  子轩非鱼  阅读(177)  评论(0编辑  收藏  举报

导航