2010-11-24 197 views
1

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

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

感谢

+0

[如何从JSP页面中的数据库中检索和显示图像?](http://stackoverflow.com/questions/2340406/how-to-retrieve-and-display-images-from-a -database-in-a-jsp-page) – KNU 2014-04-01 19:02:49

回答

0

这里有两种选择:

选项1:

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

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

这种方法有一些缺点。对于每次请求页面时都会生成一个文件。如果这些文件都有不同的名字,这可能会有效。

选项2:

你可以使用一个InputStreamReader从该被从你的SQL返回的行读取的斑点。创建一个OutputStream,使用byte[]作为流目标。然后,它只是一个写byte[]出你的JSP

+0

4小时后感谢我终于完成了。问题不在于从byte []创建文件,而是在屏幕上显示它。因为如果我把它保存在我的C:\我不能使用它,所以也得到了上下文路径和所有即使用此this.getServletContext()。getRealPath(“/足球”)“,这将生成的图像存储网页文件夹。现在我可以访问这些生成的图片.... phew ..... – Ace 2010-11-24 08:05:34

1

刚刚获得使用ResultSet#getBinaryStream()斑点的InputStream并立即写信给沿着正确的套头的HTTP响应的OutputStream的问题。根据其他答案的建议,绝对不需要将其暂时存储在磁盘上。

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