2011-04-17 48 views
0

我有一個mySQL表中的文件名,當上傳新文件時會檢查文件名是否已經存在。我怎樣才能改變新的文件名,如果同等的存在而類似:PHP如果數據庫中存在一個值,我該如何重新命名一個新值?

filename.jpg,filename_(1).JPG,filename_(2).JPG等

我讓大多數的怎麼辦呢,只是不知道如何讓重命名它的函數知道文件名中的數字(如果有的話)以及下一個數字要更改的數字。

乾杯

+0

文件名中的括號可能在Windows上很常見,但在URL中看起來很奇怪(需要'urlencode')。我建議避開它們。也可以簡化這項任務。 – mario 2011-04-17 01:24:42

回答

2

最簡單的答案是,當他們上傳時,使用時間和用戶的某種組合來生成獨特的文件名。也許是這樣的:

$user_id . time() . $user_provided_name . "." . $file_type 
0

您可以使用COUNT

SELECT COUNT(*) AS NumberFiles FROM Files WHERE FileName = '$filename' 

然後,在你的查詢結果,使用$result[0]['NumberFiles']重命名文件。

你可能還想LOCK你的文件表(或其他什麼)。

1

如果探測到這些文件的存在與file_exists()在一個循環中,那麼你可以包括這個增加的數字後綴:

$filename = preg_replace('# (_\( (\d+) \))? (?=\.\w+$) #ex', 
      '"_(" . ($2+1) . ")"', $filename, 1); 

同樣可以完成strpos/substr函數。它可能看起來不像亂碼。

相關問題