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


回應(Leave a Reply)