图片保存到数据库blob字段
来源:互联网 发布:unity3d guitexture 编辑:程序博客网 时间:2024/05/29 18:18
前言
目前个人总结图片保存有三种方式:
1.大型有关图片的项目一般都是保存到一个第三方的云服务器上,数据库保存图片的地址就可以了。
2.也可以将图片上传到自己项目所在的服务器上,数据库保存图片的地址就可以了。
3.第三种就是将图片保存到数据库的blob字段里。
今天主要说第三种方式。
图片保存
dao层代码如下:
public void doSave(Map<String, Object> parasMap) throws Exception { StringBuffer sql = new StringBuffer(); Connection conn = null; PreparedStatement pst = null; try{ conn = this.getConnection(); sql.append("insert into picture_t "); sql.append("(id,name,picture) "); sql.append("values(picture_s.nextval,'"+parasMap.get("name")+"',?) "); pst = conn.prepareStatement(sql.toString()); File file = new File(parasMap.get("src")); FileInputStream fStream = new FileInputStream(file); pst.setBinaryStream(1, fStream, (int) file.length()); pst.execute(); }catch(Exception e){ System.out.pring(e); }finally{ close(pst,conn); }}
上边的代码中可以看到,参数parasMap中包含图片的路径(parasMap.get(“src”)),将图片路径利用文件输入流读取图片保存到数据库中,数据库中picture字段就是blob类型。
图片读取展现到页面
dao层代码正常写,从数据库select图片所在的blob字段,用rs.getBlob(“picture”)获取并保存到Map中然后添加到list中即可。
action中接收到该list后做如下处理:
public void queryImg(HttpServletRequest request, HttpServletResponse response) throws Exception{ String id = request.getParameter("id"); String imgIndex = request.getParameter("imgIndex"); List<Map<String,Object>> list = bo.queryImgById(id); Blob blob=(Blob) list.get( Integer.parseInt(imgIndex)).get("picture"); int length = (int) blob.length(); byte[] bImage = new byte[length]; InputStream is = new BufferedInputStream(blob.getBinaryStream()); is.read(bImage, 0, length); OutputStream out = response.getOutputStream(); out.write(bImage); out.flush(); out.close(); is.close(); }
上边的代码中可以看出将图片从list里取出来后强转为Blob类型,这个类型是java自带的类。
页面的img标签的src要请求到这个方法中,如下:
<img src="/picture.do?method=queryImg&id=1&imgIndex=2">
注意事项
以上方法就可以将图片保存到数据库并回显到页面上。难点在于如何同时处理多张图片。对于保存来说就是写个循环保存即可,而对于回显来说,就要先写一个方法,查询一共有多少张图片回显,比如有3张图片,那么在页面上就要有三个 <img src="/picture.do?method=queryImg&id=1&imgIndex=2">
每个img标签的不同之处在于向后端传的参数imgIndex,分别为0、1、2,
这样就可以同时回显3张图片了。
阅读全文
0 0
- 图片保存到数据库blob字段
- base64图片以blob保存到数据库
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
- struts+hibernate上传图片保存到oracle的blob字段
- 将图片保存至Oracle数据库Blob字段中
- 用hibernate 读取BLOB字段保存到数据库中
- JDBC上传图片文件到MySQL数据库的blob字段
- 插入图片到数据库(BLOB大字段保存对象)
- Hibernate4 Blob Clob图片保存到数据库和读取
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中.
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- Kettle 生成的XML格式数据保存到Oracle 数据库的BLOB类型字段中
- C#将图片保存到数据库字段并反向读取
- 字符串如何存到数据库blob字段
- c++写入oracle数据库blob字段,读取blob到本地文件
- c++写入oracle数据库blob字段,读取blob到本地文件
- PHP中文乱码解决办法
- [Linux C编程]多线程
- 什么是DSL
- 收藏的博客 -- 高性能Linux服务器
- leetcode--Count Complete Tree Nodes
- 图片保存到数据库blob字段
- 复制一个目录下文件到另一个目录下
- Mybatis入门例子
- 设计模式之总结
- js 数组去重
- repo_guide
- 智能小车二《arduino的软件环境》
- 用Reactor模式构建的Kafka Server网络层和API层---架构和设计
- sqlserver 2008 无法使用特殊主体‘sa’,错误15405