首先实例化上传类
$upload = new UploadFile();
然后设置上传商品图片上传目录
$upload->set(‘default_dir‘,ATTACH_GOODS.DS.$upload->getSysSetPath());
设置上传图片宽高最大尺寸,多出部分将被按比例裁切
$upload->set(‘max_size‘,C(‘image_max_filesize‘));
跟据业务需要,系统将图片裁剪为4张缩略图,4张图的最大宽度设置从配置文件中取得
$thumb_width =sprintf(‘%s,%s,%s,%s‘,C(‘thumb_tiny_width‘),C(‘thumb_small_width‘),C(‘thumb_mid_width‘),C(‘thumb_max_width‘));
设置最大高度
$thumb_height =sprintf(‘%s,%s,%s,%s‘,C(‘thumb_tiny_height‘),C(‘thumb_small_height‘),C(‘thumb_mid_height‘),C(‘thumb_max_height‘));
$upload->set(‘thumb_width‘, $thumb_width);
$upload->set(‘thumb_height‘,$thumb_height);
设置4张图片的名称后缀
$upload->set(‘thumb_ext‘, ‘_tiny,_small,_mid,_max‘);
系统还支持设置文件名称前缀
$upload->set(‘fprefix‘,$store_id);
系统允许上传哪些类型的图片
$upload->set(‘allow_type‘,array(‘gif‘,‘jpg‘,‘jpeg‘,‘png‘));
调用upfile方法开始上传操作
$result = $upload->upfile($_POST[‘product_thumb‘]);
如果上传错误,输出json格式的错误信息
if (!$result){
如果系统是GBK格式,则转成utf-8编码,再输出json信息
if(strtoupper(CHARSET) == ‘GBK‘){
$error= Language::getUTF8($upload->error);
}
$output= json_encode(array(‘error‘=>$error));
输出json信息,(商品图片上传是异步上传)
exit($output);
}
如果上传无误,返回图片新路径
$img_path =$upload->getSysSetPath().$upload->file_name;
以上是商品图片上传处理的主要代码(裁剪由uploadfile类内部完成),得到商品图片新路径后,保存入库即可。保存到商品表的商品图片只是缩略图一种尺寸,商城使用封装的图片调用函数来满足不同页面对不同尺寸图片的要求,这些函数位于framework/function/goods.php中,分别为thumb ,cthumb,gthumb,这些函数的具体使用可查看官方手册。
系统支持多种图片存储方式配置,打开商城根目录下的config.ini.php,找到$config[‘thumb‘][‘save_type‘]项,默认为$config[‘thumb‘][‘save_type‘] = 1;表示本地存储,使用商城域名访问。$config[‘thumb‘][‘save_type‘]= 2;表示图片存储目录不变,但支持使用图片域名指向存储目录,如pic.shopnc.net指向upload目录(也适用于CDN加速的情况)。
原文:http://www.cnblogs.com/zhijiangch/p/5127632.html