2011-01-27 58 views
0

你好,我實現了BalusC的Fileupload example,它工作得很好:-D 我的問題是關於文件direcory。在這個例子中,目錄位於c:\upload。 我的意圖是通過fileupload更改我的webApps標題圖像。爲了實現這一點我必須在我的腦海不同的方式:JSF FileUpload目錄

  1. 圖片保存在我的webapps的資源目錄和XHTML頁面的簡單引用它。但不幸的是,沒有得到webApps的目錄來保存它。如何做?

  2. 我將圖片保存到我的webapp外部(如示例所示)。但後來我不得不引用外部圖像轉換成XHTML的網頁,這也是我不知道該怎麼辦..

能否請你告訴我怎麼解決這些途徑之一:-)

回答

1

將圖片保存到我的webApps的資源目錄中,並在xhtml頁面簡單引用它。但不幸的是,沒有得到webApps的目錄來保存它。如何做?

技術上,您可以使用ExternalContext#getRealPath()一個相對網絡路徑轉換爲絕對磁盤文件系統的路徑。

String relativeWebPath = "/upload"; 
String absoluteDiskPath = externalContext.getRealPath(relativeWebPath); 
File file = File.createTempFile(prefix + "_", "." + suffix, new File(absoluteDiskPath)); 
// ... 

但是這不推薦!每當您將文件寫入公共webcontent時,每當重新部署webapp或甚至重新啓動服務器時,它們都會丟失。它並不是永久存儲。檢查How to save uploaded file in JSF是否正確。

我將圖片保存在我的webapp外部(如示例所示)。但後來我不得不將外部圖像引用到xhtml頁面中,我也不知道該怎麼做。

要麼添加路徑作爲服務器的新的上下文(如何做到這一點依賴於servletcontainer化妝/版本,或創建一個servlet剛剛通過FileInputStream得到它的一個InputStream並把它寫到的的OutputStream另請參閱Load images from outside of webapps/webcontext/deploy folder using <h:graphicImage> or <img> tag

+0

由於時間問題,我選擇了快速和骯髒的解決方案。 – Sven 2011-01-27 15:30:04