【发布时间】:2011-06-07 15:32:43
【问题描述】:
我已将 Blob(PNG 文件)存储到数据库中,如下所示:
File file = new File( "image.png" );
FileInputStream fis = new FileInputStream( file );
statement.setBinaryStream( 1, fis, (int) file.length() );
目前我使用这个过程从数据库中获取Blob图像并将其转换回图像以供使用:
Blob blob = results.getBlob( 1 );
ImageIcon imageIcon = new ImageIcon( blob.getBytes( 1L, (int) blob.length() ) );
但是,我需要一种方法将图像从 ImageIcon 放回数据库(在我更改它之后)而不创建文件,将其存储到磁盘然后使用 FileInputSteam 将其读回。
为清晰起见进行编辑 好吧,假设我将该图像作为 ImageIcon 存储在 Label 中。我知道如何将其放入数据库的唯一方法是从 FileInputStream 中读取,但这将涉及毫无意义地制作图像文件。那么我如何将 ImageIcon 中的图像作为 BinaryStream 或 Blob 读回数据库?
【问题讨论】:
-
你能澄清一下吗?您是否无法使用 java 对象“文件”,或者您不想在磁盘上创建另一个文件?更改文件时是否更改了文件名?您是说您不能使用文件和 FileInputStream 存储然后读取文件,或者您不能使用文件存储它,但您需要使用 FileInputStream 读取它?坦率地说,你的问题是什么?