首先實例化上傳類
$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加速的情況)。