2011-04-02 83 views

回答

3

如果您不擔心文件名的可讀性/長度,那麼在添加相關擴展名之前使用uniqid生成文件名的「基礎」可能是最簡單的解決方案。

(如果你很可能會被產生地段亞微秒期間的文件名,使more_entropy選項。)

+2

+1:如果您不關心文件名,這是最簡單的方法。也許將當前用戶的ID和原始文件名添加爲'$ prefix'參數以防萬一。 – 2011-04-02 10:24:56

+0

謝謝,我剛剛讀了它,似乎正是我需要的。 – Darius 2011-04-02 10:47:18

0

作爲一個kludge你可以納入當前的時代。更好的解決方案是擁有一個Singleton類,它可以從增加的私有數據成員發佈標識號。

0

使用uniqid()(如@Middaparka所示)將是一個相當安全的方法,並且如果您不關心文件名稱的樣子,那麼這將是最好的方法。同一用戶在同一微秒內用相同的文件管理兩個相同的請求是極不可能的。

如果你想保留原始文件名(它帶來 - 可解決但非常重要 - 非ASCII字符的問題),一個不斷增加的計數器將是最安全的事情。

1_IMG0085.JPG 
2_Lilies_and_pond.JPG 
3_Awesome_Party_Pic.JPG 

有這樣無緣碰撞,但是這樣的計數器不完全是微不足道的實施,如果你想成爲競爭條件安全。

您是否在用戶上傳圖片時創建數據庫記錄?在這種情況下,您可以使用新創建的記錄中的ID作爲計數器變量。

+0

我AM將圖像插入數據庫中,但我寧願隱藏文件名,將其轉換爲隨機文件名稱中的任何不恰當的單詞。 – Darius 2011-04-02 11:00:56

0

只圖像重命名爲GUID +圖像擴展