我已经从这里学到并成功实现了如何使用servlet将图像上传到服务器磁盘上,现在尝试通过userProfile.jsp以下代码在另一个jsp上显示图像:
userProfile.jsp
<img src="<jsp:include page='WEB-INF/jspf/profileImage.jspf' />" height="175" width="175" />
的代码profileImage.jspf如下:
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在应用程序根文件夹的目录中。
/files
该方法存在几个严重错误:
您不应将上载的文件存储在应用程序根文件夹中。每当您重新部署WAR时,它们都将丢失(这是因为这些文件未包含在原始WAR文件中)。
本<img src>不应该包含原始图像内容,但它应该包含返回文件内容的URL。例如
<img src>
<img src="profilePictures/${user.profilePictureFilename}" />
您不应使用JSP将二进制数据写入响应。请改用servlet。或者,如果可以的话,只需将上传文件的路径添加为另一个webapp上下文。