需求:上传图片操作处理,但是必须要添加完一个新的车型才可以,也就是说添加新车型完事后,还得操作一个更新处理,因为上传那波图片还得保存到其他路径 (比如:你上传图片的路径是:/static/upload/content/… 现在要做的事是将那个路径上传的图片转到:/static/pic/chexing/car/…下 )没完,并且挪动的同时按着规则改名(规则:需求内部规定的)
代码说事 粗暴 GD库得支持
//处理图片已经上传的那些数据 二维数组
$extend_img = json_decode($paramsAry['extend_img'],true);
unset($paramsAry['extend_img']);
$data['extend_img'] = $extend_img;
//创建目录 就是它static/pic/chexing/car/
$new_path = './static/poster/carimg/'.$brand_id.'/car/';
//新路径
if (!is_dir($new_path))//当路径不存在
{
//权限必须777 775都不可以 不信的可以试试
mkdir($new_path, 0777, true);//创建路径
}
//处理刚才那些数据处理数据 都是(/static/upload/content/big/xxxx.jpg)
foreach ($data['extend_img'] as $key => $val) {
$imginfo = pathinfo($val['extend_img']);
//给图片命名 extension这个是图片后缀 new_path 新路径
if ($val['extend_sort'] == '3') {
$rename = $new_path.$cate_id.'_'.$val['extend_sort'].'.'.$imginfo['extension'];
}else{
//内饰两幅图 任何修改或添加情况 都改成临时文件处理
if($val['extend_sort'] == '2'){
$new_aaa = '/static/poster/carimg/'.$brand_id.'/car/'.$cate_id.'_'.$val['extend_sort'].'.'.$imginfo['extension'].'.bak';
rename(APPLICATION_PATH.$val['extend_img'],APPLICATION_PATH.$new_aaa);
$val['extend_img'] = $new_aaa;
}
if($val['extend_sort'] == '1'){
$new_ccc = '/static/poster/carimg/'.$brand_id.'/car/'.$cate_id.'_'.$val['extend_sort'].'.'.$imginfo['extension'].'.bak';
rename(APPLICATION_PATH.$val['extend_img'],APPLICATION_PATH.$new_ccc);
$val['extend_img'] = $new_ccc;
}
$biao_shi = '1';
}
//移动用rename函数 第一个参数原来图片路径,第二个是最新路径位置 移动过去
//这个函数会删除原路径的图片 类似于unlink函数
if(empty($biao_shi)){
rename(APPLICATION_PATH.$val['extend_img'],$rename);
$extend_img[] = str_replace("./", '/', $rename);
}else{
if($val['extend_sort'] == '3'){
rename(APPLICATION_PATH.$val['extend_img'],$rename);
$extend_imgc = str_replace("./", '/', $rename);
}else{
$new_array[] = $val['extend_img'];
}
}
}
if(empty($biao_shi)){
$extend_img = $extend_img;
}else{
$this->dealSortImg($new_array);
$extend_img = ['1'=>'/static/poster/carimg/'.$brand_id.'/car/'.$cate_id.'_1.png','2'=>'/static/poster/carimg/'.$brand_id.'/car/'.$cate_id.'_2.png','3'=>$extend_imgc];
}
// 注意 底下和上边没关系 没有任何关联 以上已经移动成功了 我底下只是入库更新操作处理
// 处理三图的顺序问题
array_multisort($extend_img,SORT_ASC ,SORT_NUMERIC ,$extend_img);
$extend_img = implode(",",$extend_img);
$data['extend_img'] = $extend_img;
// print_r($extend_img);die;
$result = $db->update($data,['cate_id'=>$cate_id]);
在更:
其实 rename最大作用是重命名 copy函数虽然同样可以处理这个问题 但是复制出多余的还得unlink删除处理。
但是rename移动目录且重命名。一开始以为它最大的功能是移动路径,在次使用发现重命名好使,注意一点是需要些绝对路径最全路径 进行移动处理。
在更:代码重改 因为名称命名规律问题导致排序出错(页面会有缓存加时间戳 ?v=<{time()}>)