【问题标题】:Image Upload and Display in JSPJSP中的图像上传和显示
【发布时间】:2012-01-23 01:52:45
【问题描述】:

我已经成功地学习并实现了如何使用来自Here 的 servlet 在服务器磁盘上上传图像,现在尝试借助以下代码在另一个 jsp userProfile.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 目录中。

【问题讨论】:

    标签: image jsp servlets


    【解决方案1】:

    img 标签的语法是&lt;img src="url_of_the_image" .../&gt;。你正在做的是&lt;img src="contents_of_the_image_file" .../&gt;

    您需要生成一个 servlet 的 URL,该 servlet 需要打开图像文件并将其内容发送到输出流。您不能在单个 HTTP 请求中下载 HTML 文件和图像。

    【讨论】:

      【解决方案2】:

      这个方法有几个严重的错误:

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

      2. &lt;img src&gt; 不应包含原始图像内容,但应包含返回文件内容的 URL。例如

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

      这里有几个答案应该可以帮助您朝着正确的方向前进:

      【讨论】:

      • 如何使用 Servlet 从磁盘生成图像的文件 URL?
      • 就像给定的例子一样。 URL 应该匹配 servlet 的 URL 模式(在给定的示例中是 /profilePictures/*,但您可以随意命名)并动态提供文件名。这在 servlet 中,然后由 request.getPathInfo() 提供。
      猜你喜欢
      • 2018-10-10
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 2019-09-29
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多