我正在尝试从数据库中检索图像。 目前我能够展示:
`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/