2013-07-26 45 views
5

1. codeigniter的上傳庫的encrypt_name選項檢查是唯一的嗎?codeigniter上傳encrypt_name唯一性

我知道overwrite選項很重要。如果overwriteTRUE,它會覆蓋,如果它FALSE,它會通過在名稱末尾添加一個數字的文件重命名。

的問題是:它會再生加密的名稱,直到找到一個唯一的名稱,即使overwriteTRUE?我問這個,因爲很明顯,當我們想要加密的名字,當然我們不希望覆蓋。

通過添加一些數字進行重命名的問題是它損壞了文件名的大小。許多文件將有32個字符的文件名,有些可能有33個字符的文件名會破壞協調。

2.是否有可能生成永遠重複的結果呢?

+0

如果'overwrite'設置爲'true',那麼如果與現有文件相匹配,則編碼名稱將替換較早的文件,否則它將重命名當前上傳的文件。 –

+0

對不起,對不起,我的意思是即使改寫如果'FALSE'。編輯q。謝謝你的提示。 –

+0

是的,即使它已上載文件這幾乎是不可能的,將重命名正在上傳的文件匹配。 –

回答

6

由於Codeigniter使用md5(uniqid(mt_rand()))來生成加密文件名,所以我猜你會在PHP docs for uniquid中找到你的答案。

簡答題(對於2)將是:也許吧,但可能不會。

並回答你的第一個問題:不,CI不會生成一個新的加密文件名,如果它已經存在。它在名稱的末尾添加一個數字。

簡要介紹/libraries/Upload.php的源代碼,第415行有所幫助。