概述
二进制流与base64位相互转换
base64传到前端需要有文件头来区分
先自己定义一个
/**
* 图片base64格式Map
*/
private static final Map<String, String> DATA_IMAGE_MAP = new HashMap<String, String>() {
{
put("png", "data:image/png;base64,");
put("jpg", "data:image/jpeg;base64,");
}
};
base64转二进制流
/**
* base64转二进制流并封装附件实体
* @param content
* @return
*/
public static FbAttachment stringChange(String content){
FbAttachment fbAttachment=new FbAttachment();
//判断base64是否有文件头,有就截取,避免冲突
if(content.indexOf(DATA_IMAGE_MAP.get("png"),0)==0){
fbAttachment.setSuffix("png");
content = content.substring(content.indexOf(",")+1);
}else if(content.indexOf(DATA_IMAGE_MAP.get("jpg"),0)==0){
fbAttachment.setSuffix("jpg");
content = content.substring(content.indexOf(",")+1);
}
//base64转二进制流并封装进实体
fbAttachment.setAttachmentContent(Base64.decodeBase64(content));
//附件原始名
fbAttachment.setOriginName(FbAttachmentOriginName.ATTACHMENT_ORIGIN_NAME);
//附件业务类型
fbAttachment.setBizType(BusinessType.QUESTION_LIST);
return fbAttachment;
}
二进制流转base64
@Override
public String getAttachmentContent(String id) {
FbAttachment fbAttachment=fbAttachmentMapper.selectById(id);
String content=null;
// 验证后缀是否为空
if (StringUtils.isNotBlank(fbAttachment.getSuffix())) {
// 获取图片后缀
String suffix = fbAttachment.getSuffix().toLowerCase();
// 图片后缀判断
if (PICTURE_FORMAT.contains(suffix)) {
// 获取base64字符串,并替换base64后的字符串中的回车换行
//二进制流转base64
content=Base64.encodeBase64String(fbAttachment.getAttachmentContent());
"");
// 添加图片前缀
if (DATA_IMAGE_MAP.containsKey(suffix)) {
content=DATA_IMAGE_MAP.get(suffix) + content;
}
}
//非图片返回string类型
if (TEXT_FORMAT.contains(suffix)) {
content=(new String(fbAttachment.getAttachmentContent()));
}
}
return content;
}
最后
以上就是美好心锁为你收集整理的二进制流与base64位相互转换的全部内容,希望文章能够帮你解决二进制流与base64位相互转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复