2013-10-14 79 views
3

我有一個用戶表單,允許用戶上傳圖像..我將這些圖像存儲在tomcat服務器和數據庫中的圖像名稱以檢索特定用戶的圖像。如何獲取從tomcat服務器存儲的圖像並顯示它

我用於存儲圖像的操作如下代碼..

String filePath = getServlet().getServletContext().getRealPath("/") +"Images"; 
File folder = new File(filePath); 
if(!folder.exists()){ 
folder.mkdir(); 
} 
String fileName = userForm.getUploadedFile().getFileName(); 
System.out.println("Server path:" +filePath); 
File newFile = new File(filePath, fileName); 
               FileOutputStream fos = new FileOutputStream(newFile); 
fos.write(userForm.getUploadedFile().getFileData()); 
fos.flush(); 
fos.close(); 

現在我要顯示的登錄後用戶的個人資料頁中存儲的圖像..

我沒有在個人資料頁是這樣的..

<img src="http://localhost:8082/Images/${sessionUser.image}"/> 

但不獲取顯示我的形象..

認罪有人指導..

+1

你確定文件上傳到指定的文件夾嗎?你可以通過「我的電腦」訪問它嗎?另外什麼'System.out.println(「服務器路徑:」+文件路徑)的輸出;'? – zaerymoghaddam

+0

是它的上傳和「服務器路徑」給我D:\ Arthi iyer \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp3 \ wtpwebapps \ NewStrutsOBL \ Images \ Koala.jpg – xyz

+1

查看您的個人資料頁源代碼並複製'img'標記的'src'屬性的確切值並將其直接粘貼到瀏覽器地址欄中。結果是什麼?它給你哪個HTTP錯誤? – zaerymoghaddam

回答

1

由於我們試圖訪問webapp容器外的文件(圖片,視頻,pdf等),我們需要創建一個從服務器到該文件夾​​的鏈接。這可以使用'docBase''路徑'屬性上下文元素。 有幾種方法可以做到這一點(對於Tomcat文檔中提到的所有方法,請參閱this link) 我找到的最簡單的方法是將以下代碼放在/apache-tomcat-8.0.36/conf/server.xml中 Tomcat服務器的文件根據主機標籤。

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
--------- 
--------- 
<Context docBase="/path/of/your/external/folder" path="/your_webapp_name/your/url"/> 
--------- 
--------- 
</Host> 

現在,您可以輕鬆地訪問外部的文件夾中的文件在您的視圖頁面如下(假設有在/ path指定IMAGE.jpeg圖像/你/外部/文件夾/):

<img src="/your_webapp_name/your/url/IMAGE.jpeg" /> 

注意: - 注意您是使用eclipse配置的tomcat服務器還是使用終端上的tomcat。無論哪種情況,都要更改相應的server.xml文件,即如果您使用的是eclipse配置的tomcat服務器,請在eclipse的Servers目錄中更改server.xml文件,而不要在其安裝的主目錄中進行更改。

+2

在這種情況下沒有外部路徑,上傳到部署的應用程序下的文件夾。 –

0

您的Web應用程序在上下文/ NewStrutsOBL下運行,並且您放入的鏈接用於根上下文/。

您應該

變化的鏈接use context path

<img src="${pageContext.request.contextPath}/Images/${sessionUser.image}"/>

或放在上下文中的鏈接(不是一個好方法,但工作)

<img src="http://localhost:8082/NewStrutsOBL‌/Images/${sessionUser.image}"/>

或在鏈接中使用相對路徑,比如說你的頁面文件在同一個direc下保守黨的圖片(可以是好還是不依賴於需求):

<img src="Images/${sessionUser.image}"/>

作爲一個側面說明,你也可以change your context path從/ NewStrutsOBL到/(simpler way當您從Eclipse中運行),但是這不是與問題相關,一般來說,在鏈接或代碼中依賴特定的上下文根將是一種不好的做法。

另一個無關的方面說明,在大型企業應用程序中,通常不會修改正在運行的應用程序的Web應用程序內容,而是使用外部文件夾或數據庫。但對於個人或測試應用程序,它是好的。

相關問題