【发布时间】:2010-11-24 19:59:00
【问题描述】:
我使用 Blob 类型将图像存储在数据库中。现在我可以使用 select 从数据库中获取此图像。我想在我的 jsp 上显示这个图像。在 Jsp 中,我创建了一个表并希望它成为列之一。
我有 blob 数据,如何将其转换回图像并显示在我的 jsp 页面上。
谢谢
【问题讨论】:
我使用 Blob 类型将图像存储在数据库中。现在我可以使用 select 从数据库中获取此图像。我想在我的 jsp 上显示这个图像。在 Jsp 中,我创建了一个表并希望它成为列之一。
我有 blob 数据,如何将其转换回图像并显示在我的 jsp 页面上。
谢谢
【问题讨论】:
只需使用 ResultSet#getBinaryStream() 获取 blob 的 InputStream 并立即将其沿一组正确的标头写入 HTTP 响应的 OutputStream。完全没有必要按照其他答案中的建议将其临时存储在磁盘上。
更详细和完整的代码示例可以在this answer找到。
【讨论】:
这里有两个选项:
选项 1:
这可能不是最好的答案,但它会在紧要关头...
您需要使用InputStreamReader 从列中读取blob,然后创建FileOutputStream,然后在“已创建”图像目录中创建文件。例如,如果您将图像文件存储在名为/pics 的目录中,则可以将文件写入名为/pics/generated 的目录中。
这种方法有一些缺点。一方面,您会在每次请求页面时生成一个文件。如果文件都具有不同的名称,这可能会起作用。
选项 2:
您将使用 InputStreamReader 从 SQL 返回的行中读取 blob。创建一个 OutputStream,使用 byte[] 作为流目标。然后只需将byte[] 写入您的 JSP 即可
【讨论】: