上傳圖片並移動路徑且修改圖片名稱操作

需求:上傳圖片操作處理,但是必須要添加完一個新的車型纔可以,也就是說添加新車型完事後,還得操作一個更新處理,因爲上傳那波圖片還得保存到其他路徑 (比如:你上傳圖片的路徑是:/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()}>)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章