一尘不染

在JSP中上传和显示图像

jsp

我已经从这里学到并成功实现了如何使用servlet将图像上传到服务器磁盘上,现在尝试通过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在应用程序根文件夹的目录中。


阅读 290

收藏
2020-06-08

共1个答案

一尘不染

该方法存在几个严重错误:

  1. 您不应将上载的文件存储在应用程序根文件夹中。每当您重新部署WAR时,它们都将丢失(这是因为这些文件未包含在原始WAR文件中)。

  2. <img src>不应该包含原始图像内容,但它应该包含返回文件内容的URL。例如

    <img src="profilePictures/${user.profilePictureFilename}" />
    
  3. 您不应使用JSP将二进制数据写入响应。请改用servlet。或者,如果可以的话,只需将上传文件的路径添加为另一个webapp上下文。

2020-06-08