2012-04-26 61 views
2

語境:文件上傳 - 目錄結構的最佳實踐?

我剛寫了保存所有傳入的文件到我的網站的上傳目錄中的PHP文件上傳處理程序。 上傳目錄可以通過網絡公開訪問,而且當前每個文件都是用數據庫生成的唯一ID重命名後直接轉儲的。 hander將允許除JS和PHP之外的任何文件類型,而不僅僅是圖像。 最終可能會有數千個文件的數量,但這需要幾年才能發生。

我的問題:

的是它在服務器上在同一目錄下所有上傳的文件是好還是壞主意,如果不是,請說明原因,並會有什麼更好的辦法?

我注意到,wordpress將它們存儲在爲日期命名的目錄中。

我可以看到唯一真正的缺點是目錄上的ls可能是資源密集的,一旦有幾千個文件在那裏。 或者對一個目錄中的文件數量有限制,或者一個目錄(運行Linux)的總大小是多少?

有關安全略微搶先注:

上傳處理器固定以防止任何人,但登錄管理員級別的用戶上傳文件,也不會拯救PHP或JS文件(如ATLEAST據我可以可靠地使用$_FILES數組中的type屬性對它們進行可靠測試),因爲這些可以由服務器執行。我計劃實施的另一個安全措施是阻止對某些文件類型的請求的文件.htaccess,只是一個incase。這方面的任何說明也會受到歡迎,但這不是這個問題的一部分。

回答

2

當涉及到組織文件時,沒有一套標準。但是,將所有文件放在一個目錄中並不是一個好主意。它最終會開始影響系統的性能,特別是在涉及索引時。

你可以做WordPress所做的事情,按年份,月份和日期進行組織。你也可以按文件類型(擴展名)來組織,所以有一個PDF目錄,一個ZIP目錄等等,可能還有年/月/日的目錄供進一步分類。

+0

感謝你和@ethrbunny,這兩個好的建議,我會帶他們上船。我非常喜歡按類型而不是日期等來分隔文件的想法,如果我能夠可靠地檢測文件類型,那麼這就是我要去的方式。再次感謝 – jammypeach 2012-04-30 09:27:53

1

如果是我,我會分解它白天或一些時間值。您正在討論(可能)數千個未知大小的文件。您最終必須圍繞此構建存儲,並且可能需要將部分移動到其他卷,存檔等。

我還要確保每個文件都是chmod -x並給定一些中性後綴。

編輯:我同意@NADH關於索引。當文件夾中有成千上萬的文件時,許多操作系統變得越來越模糊。