2012-10-31 21 views
0

我正在使用JSP和servlet構建應用程序。我正在試圖建立一個文件上傳功能。我想確保我在本地創建的文件夾結構傳輸到Apache Web服務器。有什麼辦法來達到這個目的?我有一個表單,我使用輸入文件控制爲特定文件夾提供路徑。當我提交表單時,應該在Web服務器上創建表單中所選文件夾下的任何文件和文件夾的層次結構。如果該文件夾包含任何文件,則該文件應自動傳輸到服務器。是否有可能做出這樣的功能?如何使用JSP和servlet構建目錄和文件層次結構上傳功能?

回答

0

上傳文件時,通常只會獲取文件名和文件內容。您通常也不會獲得整個客戶端磁盤文件系統路徑。只有可憐的MSIE網絡瀏覽器會因爲安全錯誤而錯誤地發送這些信息,但是您應該在/\上修剪此錯誤,並最終只使用文件名,或者如果您使用的是Apache Commons FileUpload,則使用FilenameUtils#getName()

至於服務器端文件夾結構,只需將上傳的文件存儲在固定文件夾中的唯一名稱下。不要不必要地創建其他文件夾,除非該文件夾應該標識登錄用戶或其他東西,當然。您可以使用File#createTempFile()根據文件名前綴和文件名後綴(擴展名)創建唯一的文件名,以避免上傳的文件重複出現相同的名稱被覆蓋。

至於服務器端的上傳文件夾位置,請確保它不在服務器文件夾結構的webapp的deploy文件夾中。每次重新部署Web應用程序時,這都會丟失,原因很簡單,即上傳後新添加/更改的文件未包含在待部署的WAR中。

至於服務文件,只需將上傳文件夾位置作爲另一個虛擬主機添加到服務器配置。目前還不清楚「Apache Web服務器」的含義,因爲Apache是​​一家建立許多軟件產品的龐大軟件公司。你的意思是Apache HTTPD? Apache Tomcat? Apache TomEE? Apache Geronimo?等等。當你在JSP/Servlet上下文中討論時,我將假設Apache Tomcat。然後頭到這個答案:How I save and retrieve an image on my server in a java webapp