java - 如何将 blob 转换为 JSP 中显示的图像

标签 java jsp blob

我正在尝试从数据库中检索图像。 目前我能够展示:

    `com.mysql.jdbc.Blob@2aba2aba `

在我的 jsp 输出中。 我可以知道如何将其转换为图像吗?

我用下面的来调出上面的

photo[i].getPhotoFileData();

最佳答案

与 JSP 相比,HTML 文档的工作方式更像是一个问题。您需要了解 HTML 不直接嵌入图像。相反,它使用 <img>标记以引用托管在不同 URL 的图像。

为了在 HTML 页面上显示存储在数据库中的图像,您需要一个单独的 servlet 来处理图像请求。您的 JSP 应该呈现如下所示的 HTML 文档:

<html>
  <head>
  ...
  </head>
  <body>
    ...
    <img src="www.mydomain.com/images/1234.png" />
    ...
  </body>
</html>

然后您将创建一个单独的 servlet 来处理对/images 的所有请求,这将进行数据库调用并将原始字节从它返回的 blob 发送回响应的输出流。请确保您还根据所使用的图像编码正确设置了 Content-Type header 。

为了将图像发送回请求者,您有两个选项之一。您可以获取 blob 的字节作为数组并将其写入 OutputStream(例如 out.write(blob.getBytes(0,blob.length()); )。或者您可以使用 getBinaryStream()方法,然后将字节从 InputStream 复制到 OutputStream。这是一个例子:

public static void copy(Blob from, OutputStream to)
    throws IOException {
  byte[] buf = new byte[4096];
  try(InputStream is = from.getBinaryStream()) {
    while (true) {
      int r = is.read(buf);
      if (r == -1) {
        break;
      }
      to.write(buf, 0, r);
    }
  }
}

注意:此代码尚未经过测试甚至未编译,只能用作起点。

关于java - 如何将 blob 转换为 JSP 中显示的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616955/

相关文章:

java - 使用迭代器删除并插入 LinkedHashMap?

java - 处理后调整 JPanel 大小

java - 识别哪些 JSP 文件正在运行

php - 如何在 while 循环中显示数据库中的 BLOB 图像

php - 如何使用 PHP 从具有其他列文本的表格中获取图像

xmlhttprequest - 从 XMLHttpRequest 对象响应创建文件

java - Spring Controller 中的 JDBCTemplate

java - if else 语句使用 boolean 运算符返回 null

java - 如何使用 Java 按类名解析 XML 文档

java - jsp 表单的字段验证