zoukankan      html  css  js  c++  java
  • 添加商品时为商品上传图片并生成缩略图

    为什么生成缩略图?

    1. 节省带宽
    2. 浏览加载也快

     

    生成几个缩略图以及多大的?

    根据前台页面图片的尺寸来的:

    列表页:130*130

    商品详情页:350*350

    商品详情页小图:50*50

    放大镜:700*700

     

    代码

     

    drop table if exists p40_goods;
    create table p40_goods
    (
    id mediumint unsigned not null auto_increment comment 'Id',
    goods_name varchar(150) not null comment '商品名称',
    market_price decimal(10,2) not null comment '市场价格',
    shop_price decimal(10,2) not null comment '本店价格',
    goods_desc longtext comment '商品描述',
    is_on_sale enum('是','否') not null default '是' comment '是否上架',
    is_delete enum('是','否') not null default '否' comment '是否放到回收站',
    addtime datetime not null comment '添加时间',
    logo varchar(150) not null default '' comment '原图',
    sm_logo varchar(150) not null default '' comment '小图',
    mid_logo varchar(150) not null default '' comment '中图',
    big_logo varchar(150) not null default '' comment '大图',
    mbig_logo varchar(150) not null default '' comment '更大图',
    primary key (id),
    key shop_price(shop_price),
    key addtime(addtime),
    key is_on_sale(is_on_sale)
    )engine=InnoDB default charset=utf8 comment '商品';

     

    logo varchar(150) not null default '' comment '原图',
    sm_logo varchar(150) not null default '' comment '小图',
    mid_logo varchar(150) not null default '' coment '中图',
    big_logo varchar(150) not null default '' comment '大图',
    mbig_logo varchar(150) not null default '' comment '更大图',

    导入到数据库

    alter table p40_goods add logo varchar(150) not null default '' comment '原图';
    alter table p40_goods add sm_logo varchar(150) not null default '' comment '小图';
    alter table p40_goods add mid_logo varchar(150) not null default '' coment '中图';
    alter table p40_goods add big_logo varchar(150) not null default '' comment '大图';
    alter table p40_goods add mbig_logo varchar(150) not null default '' comment '更大图';

    在表单增加文本域

    <form method="post" action="__SELF__"   enctype="multipart/form-data" >

    <tr>
    <td class="label">LOGO:</td>
    <td>
    <input type="file" name="logo" size="60" value="" />
    <span class="require-field">*</span>
    </td>
    </tr>

    在添加到数据库之前先处理图片,修改商品模型

      

    protected function _before_insert(&$data, $option)
    {
    /**************** 处理LOGO *******************/
    // 判断有没有选择图片
    if($_FILES['logo']['error'] == 0)
    {
    $upload = new ThinkUpload();// 实例化上传类
    $upload->maxSize = 1024 * 1024 ; // 1M
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
    $upload->rootPath = './Public/Uploads/'; // 设置附件上传根目录
    $upload->savePath = 'Goods/'; // 设置附件上传(子)目录
    // 上传文件
    $info = $upload->upload();
    if(!$info)
    {
    // 获取失败原因把错误信息保存到 模型的error属性中,然后在控制器里会调用$model->getError()获取到错误信息并由控制器打印
    $this->error = $upload->getError();
    return FALSE;
    }
    else
    {
    /**************** 生成缩略图 *****************/
    // 先拼成原图上的路径
    $logo = $info['logo']['savepath'] . $info['logo']['savename'];
    // 拼出缩略图的路径和名称
    $mbiglogo = $info['logo']['savepath'] .'mbig_'. $info['logo']['savename'];
    $biglogo = $info['logo']['savepath'] .'big_'. $info['logo']['savename'];
    $midlogo = $info['logo']['savepath'] .'mid_'. $info['logo']['savename'];
    $smlogo = $info['logo']['savepath'] .'sm_'. $info['logo']['savename'];
    $image = new ThinkImage();
    // 打开要生成缩略图的图片
    $image->open('./Public/Uploads/'.$logo);
    // 生成缩略图
    $image->thumb(700, 700)->save('./Public/Uploads/'.$mbiglogo);
    $image->thumb(350, 350)->save('./Public/Uploads/'.$biglogo);
    $image->thumb(130, 130)->save('./Public/Uploads/'.$midlogo);
    $image->thumb(50, 50)->save('./Public/Uploads/'.$smlogo);
    /**************** 把路径放到表单中 *****************/
    $data['logo'] = $logo;
    $data['mbig_logo'] = $mbiglogo;
    $data['big_logo'] = $biglogo;
    $data['mid_logo'] = $midlogo;
    $data['sm_logo'] = $smlogo;
    }
    }
    // 获取当前时间并添加到表单中这样就会插入到数据库中
    $data['addtime'] = date('Y-m-d H:i:s', time());
    // 我们自己来过滤这个字段
    $data['goods_desc'] = removeXSS($_POST['goods_desc']);
    }
    }

     

    世上无难事,只怕有心人......
  • 相关阅读:
    IE兼容问题,各类css hack代码(亲测有效)
    javascript进阶系列专题:闭包(Closure)
    javascript进阶系列专题:作用域与作用域链
    github文件上传及github pages博客搭建教程
    javascript算法
    【CSS3】标签使用说明
    【html5】常见标签使用说明(持续更新)
    通过一行代码学习javascript
    Object.create()兼容实现方法
    oracle查询锁表解锁语句 (转)
  • 原文地址:https://www.cnblogs.com/gooderic/p/5679406.html
Copyright © 2011-2022 走看看