base64图片以blob保存到数据库

在新的项目中有模块要将地区赋予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时候发现图片出现问题。网上有大神解析过,不做多余赘述。

你可能感兴趣的:(base64图片以blob保存到数据库)