我有一個mySQL表中的文件名,當上傳新文件時會檢查文件名是否已經存在。我怎樣才能改變新的文件名,如果同等的存在而類似:PHP如果數據庫中存在一個值,我該如何重新命名一個新值?
filename.jpg,filename_(1).JPG,filename_(2).JPG等
我讓大多數的怎麼辦呢,只是不知道如何讓重命名它的函數知道文件名中的數字(如果有的話)以及下一個數字要更改的數字。
乾杯
我有一個mySQL表中的文件名,當上傳新文件時會檢查文件名是否已經存在。我怎樣才能改變新的文件名,如果同等的存在而類似:PHP如果數據庫中存在一個值,我該如何重新命名一個新值?
filename.jpg,filename_(1).JPG,filename_(2).JPG等
我讓大多數的怎麼辦呢,只是不知道如何讓重命名它的函數知道文件名中的數字(如果有的話)以及下一個數字要更改的數字。
乾杯
最簡單的答案是,當他們上傳時,使用時間和用戶的某種組合來生成獨特的文件名。也許是這樣的:
$user_id . time() . $user_provided_name . "." . $file_type
如果探測到這些文件的存在與file_exists()在一個循環中,那麼你可以包括這個增加的數字後綴:
$filename = preg_replace('# (_\( (\d+) \))? (?=\.\w+$) #ex',
'"_(" . ($2+1) . ")"', $filename, 1);
同樣可以完成strpos/substr函數。它可能看起來不像亂碼。
文件名中的括號可能在Windows上很常見,但在URL中看起來很奇怪(需要'urlencode')。我建議避開它們。也可以簡化這項任務。 – mario 2011-04-17 01:24:42