2008-12-01 135 views
5

關於存儲從用戶上傳文件的最佳做法是什麼?在文件系統中存儲上傳文件的最佳實踐

目前,我在下面的方法中用於存儲文件:

<web_app_root>/course_material/<term_id>/<course_id>/<file_id> 

正如你可以看到,文件根據數據庫中的密鑰存儲。我認爲這樣更安全,因爲我不必過濾文件名並將不安全的字符變成安全的字符。

但是,我正在啓動一個新項目,並想知道將Web應用程序的文件系統與數據庫緊密關聯是否是一個壞主意。我應該以更易讀的格式存儲文件嗎?

<web_app_root>/course_material/<term_name_underscored>/<course_name_underscored>/<file_name_underscored> 

如果是這樣,過濾文件名是最安全的方法是什麼?或者,我現在正在將它做成最佳做法?

回答

0

我建議你再取出web_app_root。

我喜歡你在第一個例子中的做法。

+0

只要文件目錄不在htdocs目錄中,一切都應該沒問題吧?我只想將與特定項目相關的所有內容都保存在自己的目錄中。 – rlorenzo 2008-12-02 01:23:37

1

我總是將文件存儲在一個具有唯一GUID文件名的目錄中,並將GUID映射到DB中的文件。只要你沒有手動瀏覽文件等,這可能是最簡單的解決方案(也可以繞過無效的字符)。

另一種選擇是將它們作爲BLOBS存儲在數據庫中。我也這樣做了 - 但它是填補現代NAS設備應該處理的複製災難恢復場景。

如果您發現需要手動瀏覽應用程序以外的文件,出於某種原因,然後使用長名或短名(但您想瀏覽它們)將會更清潔。