base64图片以blob保存到数据库

来源:互联网 发布:网络作家如何挣钱 编辑:程序博客网 时间:2024/05/24 22:42

在新的项目中有模块要将地区赋予logo,并且提供在线编辑logo功能。所以整理了一下:

  • 前端logo在线编辑用[cropper],完成logo的剪切、旋转功能。
  • 以base64格式传到后台,java处理存入数据库区域表中,logo对应的字段时Blob类型
  • 图片链接和图片上传

实现形式

  • cropper 处理完图片后获取 base64格式图片,利用post请求传递到后台;
  • java用String类型字段接收传递过来的base64图片的值;
  • 再将String字段转换成byte[] 插入数据库

代码块

示意代码如下:

//获取已生成base64图片的img元素var base64 = $("#elem").attr("src");$.ajax({        cache : true,        type : "POST",        url : url,        data : "param="+base64+"&areaId="+tempId,        async : false,        success : function(data) {            //TODO        }    });//后台java area 是区域表的实体类byte [] img = null;try {    img = area.getParam().replaceAll(" ", "+").getBytes("utf-8");} catch (UnsupportedEncodingException e) {    //TODO}/*java 实体类 displayLogo(byte [])对应 *oracle数据库区域表中字段 DISPLAY_LOGO(Blob) */area.setDisplayLogo(img);sysBizAreaMapper.modifyLogo(area);//项目SSM框架

注:

base64传递过程中“+”会被自动替换成“ ”,所以在java接收的时候又将它还原了。我在图片很小(1-2k左右)时候没发现这个问题,然后在上传较大图标logo时候发现图片出现问题。网上有大神解析过,不做多余赘述。