2011-12-18 83 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文件和图像。