2011-11-28 80 views
0

我正在尋找一種解決方案來存儲使用Java Servlet的Web應用程序的唯一文件名。使用散列存儲具有唯一文件名的圖像

我需要的是在網頁中渲染配置文件圖像,因爲我決定只在數據庫中存儲文件名我只能確定它們在圖像文件夾中是唯一的:爲了實現這個功能,我想要命名圖像,並將它們與這對夫妻組成的字符串名稱保存:

<user_id>_<hash>.<file-type> 

這樣,我想我會很肯定會有沒有衝突,因爲user_ids已經是唯一的。

1)該解決方案是否正常?

2)我應該爲此選擇什麼算法?

我想正確使用它,所以代碼片段將非常感激。

感謝

回答

2

真正簡單的辦法是追加System.currentTimeMillis()的用戶ID。如果userid是唯一的,那麼它應該是非常安全的。

+0

哦,這太容易和簡化了,我已經太多「哈希愛好者」我迫不及待地想要使用哈希處理所有事情。現在我希望我一開始就想到了。感謝讓我回到地球:) – urobo

+0

如果您真的想要,您可以加密或MD5結果(並且您可以在Java中獲得MD5方法) – Andy

4

您可以使用File#createTempFile()其中指定前綴,後綴和文件夾。生成的文件名保證是唯一的。

File file = File.createTempFile("name-", ".ext", new File("/path/to/uploads")); 
// ... 

不,這個文件不會在退出時自動刪除或者什麼的,它只是臨時文件生成機制的一部分。

0

爲什麼附加一個散列或任何東西給它,如果它的1對1映射? 1個用戶到1個檔案圖片,只需使用他們的ID。如果它是1到多個,則將該記錄保存在數據庫中並獲取該記錄的ID並將其用作名稱。您可能希望將所有圖像轉換爲特定的圖像格式,以保持一致性,以免存儲在數據庫中。

BalusC tempfile方法可以完美地與這個提出的概念一起工作。

相關問題