通过文件选择器,选择图片文件并把图片文件 存入 数据库的 blob类型字段中
及直接从数据库中读取图片文件(Blob --> 图片)
步骤:
1、创建文件选择器,获取选择的图片文件
//声明文件,表示要存入数组的图片文件,做为全局变量
File file = null;
//此代码表示双击一个组件时,弹出文件选择器,写在组件的MouseClicked事件代码中
if (evt.getClickCount() ==2)
{
//创建文件选择器
//设置文件后缀的过滤器
"jpg,png,gif图片", "gif", "png","jpg");
//把过滤器添加到文件选择器中
//表示选择了一个文件打开
//获取选择的文件
file =jFileChooser.getSelectedFile();
//把文件存入写入流,缓存
FileInputStreaminputStream = new FileInputStream(file);
//定义字节数组,同于存放二进制文件,长度为写入流的长度
byte[] b = newbyte[inputStream.available()];
//把字节数组写入流
inputStream.read(b);
//获取文件 --> 图片文件
ImageIcon icon = newImageIcon(b);
//把文件放在lbl组件上显示
lblPhoto.setIcon(icon);
}
2、把图片存入数据库中
//获取图片文件,写入输入流
FileInputStream inputStream = newFileInputStream(file);
//转化字节数组
Byte []imageData = new byte[inputStream.available()];
//读入输入流中
inputStream.read(imageData);
//byte数组 -->blob类型
Blobphoto = new SerialBlob(imageData);
//存入数据库
contact.setPhoto(photo);
//contact为数据库中记录,用java代码表示的对象
3、把数据库中的Blob文件--> 图片文件显示
//从数据库中获取Blob文件
Blobphoto = contact.getPhoto();
//Blob -->字节数组
Byte[]data = photo.getBytes(1,photo.getBinaryStream().available());
//字节数组 -->图片类型
IconimageIcon = new ImageIcon(data);
//把图片存入组件中显示
lblPhoto.setIcon(imageIcon);
JFileChooser jFileChooser = newJFileChooser();
FileFilter fileFilter = new FileNameExtensionFilter(
jFileChooser.setFileFilter(fileFilter);
if (jFileChooser.APPROVE_OPTION == jFileChooser
.showOpenDialog(this)) {
}