【问题标题】:Converting a Blob to an image将 Blob 转换为图像
【发布时间】:2010-11-24 19:59:00
【问题描述】:

我使用 Blob 类型将图像存储在数据库中。现在我可以使用 select 从数据库中获取此图像。我想在我的 jsp 上显示这个图像。在 Jsp 中,我创建了一个表并希望它成为列之一。

我有 blob 数据,如何将其转换回图像并显示在我的 jsp 页面上。

谢谢

【问题讨论】:

标签: jsp blob


【解决方案1】:

只需使用 ResultSet#getBinaryStream() 获取 blob 的 InputStream 并立即将其沿一组正确的标头写入 HTTP 响应的 OutputStream。完全没有必要按照其他答案中的建议将其临时存储在磁盘上。

更详细和完整的代码示例可以在this answer找到。

【讨论】:

    【解决方案2】:

    这里有两个选项:

    选项 1:

    这可能不是最好的答案,但它会在紧要关头...

    您需要使用InputStreamReader 从列中读取blob,然后创建FileOutputStream,然后在“已创建”图像目录中创建文件。例如,如果您将图像文件存储在名为/pics 的目录中,则可以将文件写入名为/pics/generated 的目录中。

    这种方法有一些缺点。一方面,您会在每次请求页面时生成一个文件。如果文件都具有不同的名称,这可能会起作用。

    选项 2:

    您将使用 InputStreamReader 从 SQL 返回的行中读取 blob。创建一个 OutputStream,使用 byte[] 作为流目标。然后只需将byte[] 写入您的 JSP 即可

    【讨论】:

    • 感谢 4 小时后我终于完成了。问题不在于从 byte[] 创建文件,而是在屏幕上显示它。因为如果我将它保存在我的 C:\ 我无法使用它,所以也必须获取上下文路径和所有,即使用这个“this.getServletContext().getRealPath("/Soccer")”,并将生成的图像存储在网络文件夹。现在我可以访问这些生成的图片了......唷......
    • @Ace 干得好,下次我必须这样做时,我会记住这一点。
    猜你喜欢
    • 2016-05-29
    • 2019-11-18
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2017-07-17
    • 2011-08-31
    相关资源
    最近更新 更多