2013-11-15 75 views
1

我想在我的web項目的根路徑上創建一個臨時文件夾來上傳文件。我一派,使用:如何在SpringMVC中獲取Web項目的根路徑?

@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public void torrent2magnet(HttpSession session) { 
    String uploadBaseDir = session.getServletContext().getRealPath("/")+File.separator+"uploadFiles"+File.separator; 
} 

可以獲取到Web項目的相對路徑。 有2個障礙如下:

1:session.getServletContext().getRealPath("/")可以在使用不同的容器(如tomcat或weblogic)時採取不同的行爲。在最壞的情況下,它可能會返回null

2:我打算編寫一個@Service類,其中將提供一個方法來返回當前Web項目的根路徑。我如何在@Service類中獲得ServletContext實例?

有沒有更好的方法來解決這兩個問題?非常感謝!

+0

你爲什麼不提供絕對路徑到Web應用程序根目錄作爲一個可配置參數屬性文件,數據庫字段或環境變量。 – shazin

回答

1

Just Implement ServletContextAware接口自動注入ServletContext。覆蓋setServletContext方法。請按照link

還有一個建議是,請準備好您的以外的application.that上傳目錄總是一個好的設計

+0

謝謝!你的意思是我只寫了一個「/ home/myself/uplodFiles」的路徑?它是否允許寫入不是Web項目根目錄的子路徑的路徑? – Judking

+0

絕對是!當上傳文件的數量增加時,它將有助於將來 – Keerthivasan

+0

好,我會試試。再次感謝! – Judking

相關問題