2009-07-31 103 views
1

在PHP世界中,通常會在應用程序文件夾中創建一個名爲「uploads」或類似的目錄。所有上傳的文件都存儲在那裏,數據庫包含這些文件的相對路徑。Servlets:在哪裏存儲上傳的文件?

然而,在Java/servlet世界中,我不確定處理上傳文件的常用方法是什麼。獲取應用程序目錄中目錄的路徑可能很困難,並且如果WAR文件被重新部署,整個目錄可能會被銷燬。目前,我將上傳的文件作爲blob存儲在數據庫中,但這不是我的首選解決方案。

所以我的問題是,我應該在哪裏存儲上傳的文件?

+0

爲什麼你的首選解決方案不是blob? – 2009-07-31 14:31:33

回答

4

在磁盤上不屬於您的應用程序的文件結構或應用程序服務器/容器服務器的任何文件夾中。您可以將此文件夾/文件夾的絕對路徑保存爲文件或數據庫中的配置。

1

爲什麼不存儲在.war層次結構之外的目錄中?在servlet參數中指定一個目錄(使其可配置),並在servlet初始化時檢查/創建(所以當有人第一次上傳文件時不會首先爆發)。

0

做同樣的事情;在filesytem的某處創建一個uploads文件夾並將文件粘貼在那裏。不要將它放在Web容器中,因爲如果您的WAR未被部署,它將被刪除。

0

像Brian和Boris提到的那樣。爲什麼不將上傳的文件存儲在WAR目錄之外。爲什麼很難在應用程序目錄之外獲取路徑。

0

將它們保存到數據庫中的blob字段中 - 任何現代數據庫都有能力處理這個問題。

我的一個例外是,如果通過處理servlet容器外部的請求來提高性能,那麼您的文件頻率很高。