博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
添加商品时为商品上传图片并生成缩略图
阅读量:5009 次
发布时间:2019-06-12

本文共 3656 字,大约阅读时间需要 12 分钟。

为什么生成缩略图?

  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 \Think\Upload();// 实例化上传类
$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 \Think\Image();
// 打开要生成缩略图的图片
$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']);
}
}

 

 

转载于:https://www.cnblogs.com/gooderic/p/5679406.html

你可能感兴趣的文章
结对开发之电梯调度最终稿(徐梦迪&刘博)
查看>>
simple java mail
查看>>
信息建模
查看>>
Mybatis 数据库物理分页插件 PageHelper
查看>>
虚函数、纯虚函数详解
查看>>
z-stack中数据的发送,广播、组播、点对点
查看>>
Practial Vim 学习笔记一
查看>>
.NET中使用js实现百度搜索下拉提示效果[不是局部刷新,呜呜。。]
查看>>
ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
查看>>
关于二维码“QR”的6大注意事项
查看>>
MySQL - 常用命令及常用查询SQL
查看>>
C# .NET MVC 接收 JSON ,POST,WCF 无缝隙切换
查看>>
android获取USB设备的名称
查看>>
JavaPersistenceWithHibernate第二版笔记-第七章-005排序的集合(@org.hibernate.annotations.SortComparator)...
查看>>
ue4同c#通信时的中文乱码问题
查看>>
黄老师架构师课程笔记(二)
查看>>
mvc性能优化
查看>>
log
查看>>
663 如何做“低端”产品?(如何把低端做得高端 - 认同感)
查看>>
JDBC 第九课 —— 初次接触 JUnit
查看>>