上传拍照的图片base64存储

  • Post author:
  • Post category:其他


上传base64图片功能

这里只放了上传图片的实现类代码

业务逻辑,新增数据时,应该是先上传图片,然后把生产的uuid返回给前台,前台在新增数据时把图片id集合传给后台。

 /**
     * 拍照图片上传
     * @param resourceChangePicReq  传输类,只放了一个String pic
     * @return map
     */
@Override
    public Map<String, Object> uploadPic(PicQuery picQuery ) {
        // 因为图片是拍照发过来的,只有一个base64编码,所以很多图片信息自己造
        // 用当前系统时间戳给图片命名
        String picName = String.valueOf(System.currentTimeMillis());
        // 图片信息的实体类
        PicPo res= new PicPo(); //注意 实体类中的 pic 类型为 bty [] 类型
        // 获取传输类中的pic,要对base64进行处理
        String pic1 = picQuery .getPic();
        //对传入的base64进行截取,","号以后的字符串
        String pic2 = pic1.substring(pic1.indexOf(",")+1);
        // 替换特殊符号
        String pic3 = pic2.replaceAll("[\\s*\t\n\r]", "");
        //base64 转 byte   工具类放在下面了
        byte[] pic = Base64Util.base64String2ByteFun(pic3);
        //这里是自己根据base64编码计算图片大小
        pic1 = pic1.replace("data:image/png;base64,","");
        pic1 = pic1.replace("=", "");
        //这里计算出来的是字节大小 也即是B
        int size = (pic1.length()-(pic1.length()/8)*2);
        //除以1024 得到的就是KB的大小了
        Double picSize = Double.valueOf(size/1024);
        //最后把所有处理好的信息放入数据库
        res.setId(UUID.randomUUID().toString());
        res.setPic(pic);
        res.setPicName(picName);
        res.setPicSize(picSize);
        //编写sql语句
        resourceChangePicMapper.uploadPic(res);
        Map<String,Object> map = new HashMap();
        //用id包一下, 最后返回形式为 "id" : "res.getId"
        map.put("id",res.getId());
        return map;
    }
import java.io.*;

import org.apache.tomcat.util.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Base64Util{
    //base64字符串转byte[]
    public static byte[] base64String2ByteFun(String base64Str){
        return Base64.decodeBase64(base64Str);
    }
    //byte[]转base64
    public static String byte2Base64StringFun(byte[] b){
        return Base64.encodeBase64String(b);
    }
}



版权声明:本文为shuixiangtutou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。