关于数据库存取图片的些许事例
2016-11-14 18:39
267 查看
最近不小心碰见了关于数据库以二进制流存取图片的问题,以前只是在数据库中选择存放图片,所以觉得没什么问题,不过当这个问题出现时,还是头疼了一会,写出来,希望和我一样所有的新手共勉!!!
向数据库中存取图片(以二进制流的方式)
首先:存储图片
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编码
向数据库中存取图片(以二进制流的方式)
首先:存储图片
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编码
相关文章推荐
- 郁闷了半天,原来是这个问题:关于C#中关于图片保存到数据库以及将数据库中的图片显示到PictureBox。
- 数据库中存取图片
- 关于word文档的数据库存取
- net中关于PictureBox绑定数据库的图片字段 (转载)
- ASP.NET中存取图片到数据库的示例
- 对Oralce数据库存取图片的几种方法
- hibernat从数据库里面存取图片(Mysql)
- 如何通过java或jsp向数据库存取二进制图片
- genexus 存取图片或文件到数据库的操作
- MySQL如何存储图片?---一个向数据库存取image文件的jsp程序
- 用数据库存取图片的方法
- vb.net 存取数据库中的图片
- ASP.NET存取图片到数据库
- 关于word文档的数据库存取
- C#数据库存取图片
- 在VB中存取数据库中的图片
- Delphi 数据库中存取图片
- 在ASP.NET中存取图片到数据库
- .net中关于PictureBox绑定数据库的图片字段
- 图片存取数据库(java)