上传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 版权协议,转载请附上原文出处链接和本声明。