2010-12-14 49 views
1

基本上我有簡單的表單用戶用於文件上傳。文件應該保存在/ files /目錄下,並有一些子目錄,用於幾乎同等分割文件。例如/files/sub1/sub2/file1.txt結構化文件沒有db

另外我需要不要存儲相同的文件(按文件名)。

我有自己的解決方案。從文件名計算sha1。以前5個符號 - 例如abcde爲例,將文件放在/ files/a/b/c/d/e /中,效果很好,但給出一個文件夾包含4k文件,第2個6k文件的情況。有什麼辦法讓文件數量更接近對方?最大文件數可以是10k或10kk。

感謝您的任何幫助。

P.S.可能是我解釋錯了,所以再次:)任務很簡單 - 你只有HTML和PHP(沒有任何數據庫)和文件目錄,你應該只存儲上傳的文件沒有任何自己的數據。您應該開發能夠處理將文件上傳到文件目錄的腳本,而不必存儲重複文件(按文件名),並按每個目錄中的文件計數將子目錄拆分上載的文件(每個目錄中的最佳和計數文件應該彼此接近)。

+4

我不擔心它。由於哈希如何工作,分佈應該是相當隨機的。 – ceejayoz 2010-12-14 20:29:19

+0

也許更好地從時間戳calc sha1? – neoneye 2010-12-14 20:32:38

+0

時間戳不起作用,因爲我必須快速找到重複文件的文件名,並且不存儲上傳的文件,如果它已經存在。 – 2010-12-14 20:37:10

回答

0

我不知道爲什麼你想要它的方式。但是,如果您真的必須這樣做,iI會建議您設置每個文件夾中存儲多少字節的限制。每次你要救你打開日誌與

  1. 當前子數據
  2. 寫入到該目錄中的總字節數

如果necesary您創建一個新的子diretory(你coulduse當前時間因爲它不會重複),並重置ByteCount 然後保存文件並按字節數增加字節數。

我非常懷疑這是值得的工作,但我真的不知道你爲什麼要分配這些文件的方式。

+0

沒有分貝,沒有日誌。只有html表單和一個函數,檢查這個文件是否已經上傳(按文件名)並存儲它。 – 2010-12-14 20:57:29