关于数据库存取图片的些许事例

最近不小心碰见了关于数据库以二进制流存取图片的问题,以前只是在数据库中选择存放图片,所以觉得没什么问题,不过当这个问题出现时,还是头疼了一会,写出来,希望和我一样所有的新手共勉!!!

向数据库中存取图片(以二进制流的方式)
首先:存储图片
File file = new File(“地址”);//如d://ccc.jpg
FileInputStream fis = new FileInputStream(file);//得到图片的二进制流
定义sql插入语句;
连接数据库;
pstmt.setBinaryStream(3,fis,(int)file.length);
插入图片数据;
此时,图片已经以二进制流的方式存入数据库中。
=======================================================
然后:取出图片
连接数据库;
查询得到图片数据;
//这里注意顺序(这两个语句必须挨在一起执行,否则流会关闭),其实在我做这个的时候就一直是这个问题困扰着我,整整一上午啊。。。。。
InputStream in = new rs.getBinaryStream(4);
String str = encodeBase64(toByteArray(in));//将图片二进制流转化成Base64编码,这是我做的一个接口,所以图片要经过Base64加密。
其实我要表达的意思很简单,就是如果你要在这里读取图片的话,应该在得到流之后立刻就进行这项操作,否则流会关闭。
=======================================================
顺便带上这个函数。
这里toByteArray(InputStream in)方法是将二进制流转化成字节数组
Public Static byte[] toByteArray(InputStream in) throws IOException {
   ByteArrayOutputStream output = new ByteArrayOutputStream();
   byte[] buffer = new byte[73000];//72KB
   Int n = 0;
   While(-1 != (n = in.read(buffer))){
       output.write(buffer,0,n);
   }
   Return output.toByteArray();
}
=========================================================
encodeBase64()参数为字节数组,所以需要将二进制流转化成字节数组,再进行Base64编码


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值