天天看點

Weblogic讀不到Word檔案

Weblogic讀不到Word檔案

       之前遇到一導出word檔案的需求,我的做法是把對應導出内容放到一個word檔案中,把其中變化的内容作為變量,然後把該word檔案放在WEB-INF目錄下用來作為模闆。在導出時通過ServletContext的getRealPath()方法擷取到作為模闆的word檔案的真實路徑,然後針對該路徑new一個FileInputStream。之後通過該word的InputStream構造一個HWPFDocument,再對裡面的變量進行替換後輸出到response的輸出流中。大概代碼如下所示:

       這種方式放在tomcat或runJetty上都是沒有問題的,但是一旦打包放到weblogic上就不行了。原因是weblogic上通路的是未解壓的包裡面的内容,這個時候通過ServletContext的getRealPath()方法是擷取不到模闆檔案基于硬碟的真實路徑的,進而導緻擷取不到模闆檔案的輸入流,也就不能利用它來生成新的Word文檔進行導出了。解決方法是在擷取模闆檔案對應的輸入流時不要通過ServletContext擷取到檔案的真實路徑後再通過FileInputStream去取對應的輸入流,而是直接通過ServletContext的getResourceAsStream()方法來擷取到ServletContext環境下的資源作為輸入流。建議以後需要在Web環境下擷取資源檔案時都通過getResourceAsStream()來擷取。

(注:本文是基于poi3.9所寫)

繼續閱讀