将图片以二进制格式存入数据库,并以流的方式展现在jsp页面
2015-05-04 11:37
405 查看
1. 简介
项目新需求,管理员有权限创建应用,应用字段包括:id、softname、softunique、softimage;上传图片时,数据库存储二进制,当普通用户首页展示图片时需要以流的方式展现,全程无文件存储目录,图片不保存在服务器。本demo以springmvc框架搭建,上传文件使用的是:@RequestParam MultipartFile myfile
2. 数据库表字段
本demo使用mysql数据库,存储二进制的字段名为:blobcreate table softwareinfo( sid varchar(60) primary key, softname varchar(20), softurl varchar(100), softcommand varchar(60), softimagepath varchar(100), softimage blob, softremark varchar(100), softindex integer) |
3. 上传逻辑
@RequestMapping(value = "/soft/create", method = { RequestMethod.POST, RequestMethod.GET }) public ModelAndView create(ModelMap model, @RequestParam MultipartFile myfile, SoftEntity se, HttpServletRequest request, HttpServletResponse response) throws Exception { if (se == null) { throw new Exception("应用创建异常"); } log.info("日志:应用创建"); se.setSid(UUID.randomUUID().toString()); /* * System.out.println("文件长度: " + myfile.getSize()); * System.out.println("文件类型: " + myfile.getContentType()); * System.out.println("文件名称: " + myfile.getName()); * System.out.println("文件原名: " + myfile.getOriginalFilename()); * System.out.println("other: " + myfile.getBytes()); */ //注意此处:一下注释的方法在jdk1.5时会报错,仅支持1.6以上 // InputStream is = myfile.getInputStream(); // BufferedImage bi = ImageIO.read(is); // ByteArrayOutputStream baos = new ByteArrayOutputStream(); // ImageIO.write(bi, "png", baos); // byte[] bytes = baos.toByteArray(); // 图片转成二进制 将二进制存入数据库 se.setSoftImage(myfile.getBytes()); softService.insert(se); model.put("info", "应用创建成功!"); log.info("日志:应用创建成功"); //baos.close(); //is.close(); se = new SoftEntity(); return search(model, se, request, response); } |
4. 页面展示逻辑
Jsp: <ul> <c:forEach items="${softList }" var="soft" varStatus="status" begin="0"> <li>< 4000 /span> <a href="${soft.softUrl }"> <img src="${pageContext.request.contextPath}/user/showImage.do?index=${status.index}" width="130px" height="130px"><br /> <span style="font-size: 16px;font-weight: bold;color:navy; "> ${soft.softName}系统</span> </a> </li> </c:forEach> </ul> |
从数据库读取出二进制数据…… byte[] bb = list.get(index).getSoftImage(); // 禁止图像缓存。 response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/png"); // 将图像输出到Servlet输出流中。 ServletOutputStream sos = response.getOutputStream(); sos.write(bb, 0, bb.length); //同上传,jdk1.6以上支持 //ImageIO.write(img, "png", sos); log.info("日志:用户展现首页成功"); sos.close(); |
相关文章推荐
- java怎么把图片以base64字节存入数据库,并将其显示到jsp页面上
- ASP.Net将图片以二进制方式存入数据库,并读取
- VB ADO 用二进制方式来读写文件 入数据库 __________请参考(把文件(包括图片)存入数据库)
- 图片以二进制的方式存入数据库,以及取出图片
- WinForm把图片以二进制的方式存入到数据库,并将存入数据库的二进制图片读出显示到PictureBox中
- ASP.Net将图片以二进制方式存入数据库,并读取
- 将图片已二进制存入数据库并读入响应流在页面展示
- 基于MongoDB GridFS取二进制数据转换为图片在jsp页面显示
- 将图片以Blob格式存入数据库,再通过Servlet显示到界面
- 浅谈如何调用JSP读取数据库中图片并显示在页面上
- ASP.NET实现图片以二进制的形式存入数据库
- C#读取本地磁盘下指定路径下的所有图片,并以二进制存入数据库
- 从Oracle中数据库中读取以Blob类型存储的图片显示在jsp页面中
- 通过java或jsp向数据库存取二进制图片
- emoji 表情不能存入mysql 数据库和在jsp 页面显示的处理
- jsp提取orcal数据库中二进制图片的方法
- java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)
- 将图片文件以流的方式写入到jsp页面
- 通过java或jsp向数据库存取二进制图片
- SpringMVC从数据库中读取图片显示到JSP页面上