2017-06-20 65 views
0

我正在使用eclipse和tomcat進行開發。 似乎用戶只能訪問WebContent文件夾中的文件。
現在我需要在servlet中動態創建一個文件,但是我怎樣才能獲得WebContent文件夾的真實路徑?
我試過getServletContext().getRealPath(""),但它返回日食工作區的道路,我的項目不是路徑,它是這樣的D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
而我想這樣的事情D:\git\Monitor\WebContent
任何人都知道該如何解決?〜非常感謝servlet如何創建用戶可以直接訪問的文件

回答

0

我以另一種方式找到了老師的幫助解決方案。 由於我無法獲得WebContent的真實路徑,因此我可以修改server.xml以爲本地路徑創建可讀的前端。此配置文件位於Servers文件夾中。 server.xml的底部是這樣的。

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/> 
</Host> 

而且我加了一個Context節點,則是這樣的

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="Monitor" path="/Monitor" reloadable="true" source="org.eclipse.jst.jee.server:Monitor"/> 
    <Context docBase="D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs" path="/Monitor/logs" reloadable="true" debug="" crossContext="true"></Context> 
</Host> 

這樣一來,我可以在servlet文件寫入D:\environment\apache-tomcat-9.0.0.M21-dev\user\logs,並在前端使用URL localhost:8080/Monitor/logs/fileName獲取文件〜

0

你不能那樣做。 Web應用程序(WAR文件)可以部署爲未提取,即作爲壓縮存檔文件。

一般的解決方法是編寫一個servlet,即讓最終用戶下載生成的文件。通過這種方式,你可以將你的文件放在服務器FS的任何地方...

+0

但是'Webcontent'文件夾中的html文件可以通過像'http:// localhost:8080/Monitor/html/index.html'這樣的url訪問。 – disinuo

+0

所以我認爲關鍵問題是獲取'WebContent'的真實路徑,以便servlet可以向其寫入文件。 – disinuo

+0

Eclipse的'WebContent'成爲WAR存檔的根。你不能寫信給那裏......設置一個配置屬性,它包含一個安全可寫的路徑來存儲你的文件。這取決於你的服務器的環境.... –

相關問題