2013-04-24 67 views
1

我有一種情況,我想從本地機器創建一個inputStream(假設文件的目錄是C:\ Users \ temp \ file.txt)到有Windows的遠程服務器Server 2008.從本地機器到Tomcat的InputStream部署的webapp

如何使Web應用程序使用本地版本的文件,因爲我在編譯爲WAR文件之前嘗試了此操作。

File f = new File("C:\Users\temp\file.txt"); 

而當我嘗試使用InputStream時,它崩潰。我相信這是參考服務器的C:\ Users \ temp \ file.txt,它不存在。

我知道這是一個「啞巴」的問題,但任何建議都會非常有幫助。

+0

根據文本文件的內容,您可能會考慮將其放在資源文件夾中。無論如何,嘗試保持Web應用程序環境獨立是一個好主意。通過這種方式,任何同事的機器或各種服務器環境都可以毫無困難地運行它 – Erich 2013-04-24 19:57:17

回答

0

如果您嘗試從另一臺機器訪問存儲在一臺機器上的文件,則必須以某種方式「共享」該文件。有幾個相當簡單的方法可以做到這一點:

  1. 設置網絡文件系統。最受歡迎的選擇是Sambaan S3 bucket mounted as a drive。這樣做的好處是,所有文件都顯示爲「本地」,以便讀取文件,因此您可以像平常一樣使用FileInputStream
  2. 使用HTTP共享。在帶有該文件的主機上設置一個HTTP服務器,如Apache,將該文件複製到Web共享目錄,然後使用URL或HTTP客戶端(如Apache HTTPComponents Client)通過其URL訪問該文件。 (您也可以在FTP或其他服務中使用此方法。)

共享文件起初有點麻煩,但一旦您設置了共享文件系統或Web服務器,文件是一個辛苦。

-1

使用每個主機屬性文件有助於在這種情況下。一般來說,你想要包含環境與屬性文件之間的所有差異。

檢出PropertyPlaceholderConfigurer用於處理切換屬性文件。

你會延長該處理{ENV}佔位符,並從春季與此類似

​​

在應用程序的名字,LOCAL.ini執行它有這個

text.filename=C:\Users\temp\file.txt 

和appname- PROD.ini將其更改爲已安裝的驅動器或不同的本地路徑,從您的服務器的角度可訪問此類內容

text.filename=Z:\Users\temp\file.txt 
+0

從他提問的方式來看,我不認爲該文件在同一臺計算機上。該方法是否可以訪問遠程文件? – sigpwned 2013-04-24 19:40:58

+0

如果使用這種技術在安裝的驅動器上,則可以訪問遠程文件。如果驅動器/文件夾沒有安裝到服務器上,他必須像FTP那樣做一些更棘手的事情,或者正如你在答案中提到的那樣,HTTP /雲 – Erich 2013-04-24 19:42:38