springmvc结合base64存取图片到mysql
简介:
1.jsp通过MultipartFile上传图片到后台
2.后台把上传的图片通过base64转换成字符串存到mysql
3.从mysql读取图片字符串,通过base64反转成byte数组,再显示到jsp
1.mysql表结构
2.影射对象
package net.spring.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "t_img") public class Img { @Id private String name; @Column private String imgData; public String getImgData() { return imgData; } public void setImgData(String imgData) { this.imgData = imgData; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
3.数据库操作语句
/** * 插入图片 */ @Override public void savaImg(Img img) { try{ this.getHibernateTemplate().save(img); }catch(Exception e){ e.printStackTrace(); } } /** * 取得图片 */ @Override public Img getImg(String name) { Query query = this.getSession().createQuery( "from Img a where a.name = '" + name + "'"); return (Img)query.uniqueResult(); }
4.controller
通过MultipartFile上传文件,具体技术可以看这篇文章点击打开链接
/** * 上传文件 * @param file * @param request * @param map * @return */ @ResponseBody @RequestMapping(value = "uploadForm") public String uploadMethod(@RequestParam("file") MultipartFile file, HttpServletRequest request, Map<String, Object> map) { if (!file.isEmpty()) { try { BASE64Encoder encoder = new BASE64Encoder(); // 通过base64来转化图片 String data = encoder.encode(file.getBytes()); Img mImg = new Img(); mImg.setName("zzzz1"); mImg.setImgData(data); mTestService.savaImg(mImg); } catch (Exception e) { e.printStackTrace(); } } else { map.put("message", "文件为空"); return "errorView"; } return null; }
/** * 取得图片 * @param request * @param response */ @RequestMapping("getImg") public void getImg(HttpServletRequest request,HttpServletResponse response){ String imgId = request.getParameter("imgId"); Img img = mTestService.getImg(imgId); String data = img.getImgData(); BASE64Decoder decoder = new BASE64Decoder(); try { byte[] bytes = decoder.decodeBuffer(data); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) {// 调整异常数据 bytes[i] += 256; } } ServletOutputStream out = response.getOutputStream(); out.write(bytes); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } }
5.jsp
$(document).ready(function() { $("#imgId").click(function(){ var width = $(this).width(); if(width==200) { // 图片变大 $(this).width(500); $(this).height(500); // 设值图片到屏幕中间 $(this).css("position","absolute"); $(this).css("top", ( $(window).height() - $(this).height() ) / 2+$(window).scrollTop() + "px"); $(this).css("left", ( $(window).width() - $(this).width() ) / 2+$(window).scrollLeft() + "px"); } else { // 还原成原来大小 $(this).css("position","static"); $(this).css("top","0px"); $(this).css("left","0px"); $(this).width(200); $(this).height(200); } }); });
<span style="white-space:pre"> </span>function getImg(){ <span style="white-space:pre"> </span>$("#imgId").attr('src',"getImg.html?imgId=zzzz1"); <span style="white-space:pre"> </span>}
<input type="button" value="getImg" onclick="getImg()"/> <img width="200px" height="200px" src="" id="imgId">
6.效果图
7.base64转换图片后在数据库里的数据
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
ZEqN9K4Q1vZNdNc0Uxxb7M2Fj5GPGTkXdKZ7OXrKY6vbRaWb3yW210ypyVytYi+lTwptrh3/ABrJ
Nu9f17c+w0uDZlquVqO+bmMRUz48zUPPcNnmqKGF0strfIxOfgXo9fQhxm9k89PRa07M2Jru78TP
5ks2ja5p+tkSOqSpoXO4I6ZuW+lM4N/o6unraZk9JNHNC9Mtex2UU48exY3qyRrmPaqoqOTCp25Q
2vZ5q6q0xd40V7nW2ZyNnhVeCIv7Sdip6zazmzM6Vw47R9l7cW5uYkzrHZPHX6ujK65spK6kpXU9
Q99SqtY+NqK3KJlcrnhwRVPBZtWWu7vofkEzpflqSrHhv0fBrh292ceHHmZZ9NT1stJVL47ocvic
i8PGbjPoU8Fp0xbLTOstvpWwPVWqu5wRyoioiqnnUn8ex46no9NKonX/AL/wzbC4o1MKpU3cQAAA
AAAAAAAAAAAAAAAAUVcKhbvLnAF4PFcLlSW6B01dUwU8SftSvRqes0S8bX9N0LnMpXT18iLj9QzD
V4/aXB1t2Ll3hRTMuN3JtWfxKohI6lMkV0Gu9Xai3Xae0u2KndynrZFRvl6ZNit1s1dUJG68X2kp
1zl0dDSoue7efn2G1ePNvrzES50ZUXOpEzHfpwblvIpcnI8lDSLTNw+pqJ3falci+pERD1pyOCTC
juSmv6u0zQ6ntjqWvYiObxjlb9KN3ai+42EorUUxMRMaS6W7tdquK7c6TDVtDy3ClpX2e9pvVtEi
NjnT6NRFya9O9OSp2m1ZPn4Ju8jsJvJyVehcq7qimNI0Zu3OkrmvTTVhtZVMdLpe7yzLhjaWTPna
qJ61OXdO2esvlzp7fQRq+Z6oirjgxOrl7kJz2my1+opGaYsTN+R6pJWzf0cLOiOXtXnjnwNi0RpK
i0rb0hpk8JUyIizTqnF69ididxDu2Zv3I7oei2btGnZeHXMcblfKO6O+Xv0vZKfT9lpbdSplkSYV
3V7l5qvlMw0pjvHImREUxpDzdddVyqaqp4yuBTIM6tTJ83SNa1XPVGt7VXCFtUkroXpA9rJFTDXO
blE78dTUK7Z7QXZ3hL5cbrXyL0dUrGxPI1uEQ3oimetOjncqqjqRq2J99tUcisfc6Fr04Kiztynr
PZDUw1DEdDLHI1Uzljkd7CLL5sUss9O5bTU1NLPzTwjvCtVe/PH1kUXi3aj0FdmwrUVFLIvGOaB6
+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
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/9k=