圖片上傳的程式需要用到「檢查資料夾是否已經有相同的圖片檔名」,所以寫了一個檢查的函式。 不過後來才發現自己做了一件很笨的事,原來本來就有那個函式的存在了,我還笨笨的讓程式從資料夾裡面一個個的把檔名讀取出來判斷...囧rz

//====================
// 檢查是否有相同圖檔名稱
//====================
function checkName($imageName){
    //定義存放圖檔路徑
    $imageDirPath = 'huiyu';
    $imageDir = dir($imageDirPath);
    //反覆讀過全部的檔案名稱,並搜尋是否有同檔名
    while ($readName = $imageDir->read()){
        //目錄不檢查
        if(!is_dir($imageDirPath.'/'.$readName)){
        //取得主檔名和副檔名
        $main = substr($readName,0,strrpos($readName,'.'));
        $extend = array_pop(explode('.',$readName));
        //檢查檔案是否存在
            if($readName == $imageName && !$reCkeck){
                //已存在,自動更換新的名字後再測試
                $imageName = "copy-$main.$extend";
                //重新檢查
                $imageDir->rewind();
                continue;
            }
        }
    }
    $imageDir->close();
    //回傳最後決定的檔名
    return $imageName;
}

顯然我做一件很笨的事件,利用php檔案部分的函式庫就能更輕鬆完成

//====================
// 簡短寫法
//====================
//定義存放圖檔的路徑
define('IMAGE_DIR_PATH', 'files/image/');
function checkName($imageName){
    //若檔名為中文,轉為url編碼
    $imageName = urlencode($imageName);
    //反覆檢查
    while(file_exists(IMAGE_DIR_PATH.$imageName)){
        $imageName = 'copy-'.$imageName;
    }
    return $imageName;
}

真是令人~~

低溫烘培 發表在 痞客邦 PIXNET 留言(0) 人氣()