2011-12-18 84 views
2
顯示

我已經學會了,併成功地實現該如何上傳與Here servlet的服務器磁盤上的圖像和現在正試圖與下面的代碼的幫助下,顯示在另一個JSP userProfile.jsp圖像:圖片上傳和JSP

<img src="<jsp:include page='WEB-INF/jspf/profileImage.jspf' />" height="175" width="175" /> 

和代碼的profileImage.jspf如下:

OutputStream o = response.getOutputStream(); 
InputStream is = new FileInputStream(new File("../files/backPetals.jpg")); 
byte[] buf = new byte[32 * 1024]; 
int nRead = 0; 
while((nRead=is.read(buf)) != -1) { 
    o.write(buf, 0, nRead); 
} 
o.flush(); 
o.close(); 
return; 

,但它不工作.. 任何其他方式來顯示從磁盤上的JSP圖像連同其他事項網頁上? 我已將我的圖像保存在應用程序根文件夾中的/files目錄中。

回答

3

裏有幾個方法嚴重錯誤:

  1. 你不應該存儲在應用程序根目錄下上傳的文件。他們都會迷路時,你重新部署WAR(僅僅是因爲這些文件不是在原來的WAR文件包含。

  2. <img src>不應包含原始圖像內容,但它應該包含返回文件內容的URL如:

    <img src="profilePictures/${user.profilePictureFilename}" /> 
    
  3. 如果可以的話,則不應使用JSP二進制數據寫入響應。使用servlet來代替。或者,只需添加路徑上傳的文件作爲另一個Web應用程序上下文。

這裏有幾個答案,這將有助於你在正確的方向:

+0

如何使用Servlet從磁盤生成映像文件的URL? – Asif 2011-12-18 16:28:25

+0

就像在給定的例子。該URL應該與servlet的URL模式相匹配(在給定的例子'/ profilePictures/*'中,但是您可以任意命名)並動態提供文件名。這在servlet中,然後由'request.getPathInfo()'提供。 – BalusC 2011-12-19 00:50:53

1

img標籤的語法是<img src="url_of_the_image" .../>。你在做什麼是<img src="contents_of_the_image_file" .../>

您需要生成一個到servlet的URL,並且此servlet需要打開圖像文件並將其內容發送到輸出流。您無法在單個HTTP請求中下載HTML文件和圖像。