我是靠谱客的博主 机智白猫,最近开发中收集的这篇文章主要介绍base64转File、base64转CommonsMultipartFilebase64转File、base64转CommonsMultipartFile,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
base64转File、base64转CommonsMultipartFile
在实际开发中处理图片会使用到base64,无论是crud还是IO都可能会使用到base64,下面是两种base64转为目标类型的方法
base64转File
public static File base64ToFile(String base64) {
if (base64 == null || "".equals(base64)) {
return null;
}
String[] str = base64.split(",");
//getRealImgeStr 方法 截取bese64字符串 逗号后半部分有用的字符串
BASE64Decoder decoder = new BASE64Decoder();
byte[] buff = new byte[0];
try {
buff = decoder.decodeBuffer(str[1]);
} catch (IOException e) {
e.printStackTrace();
}
File file = null;
FileOutputStream fout = null;
try {
file = File.createTempFile("tmp", ".jpg");
fout = new FileOutputStream(file);
fout.write(buff);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fout != null) {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return file;
}
base64转CommonsMultipartFile
该方法基于第一个base64转File的方法,故而两种方法可以直接写到工具类中,用来类型转换使用
public static CommonsMultipartFile base64toMultipartFile(String base64filestr) throws IOException {
final File file = base64ToFile(base64filestr);
DiskFileItem item = (DiskFileItem) new DiskFileItemFactory().createItem(file.getName(), "image/jpeg", false,
file.getName());
InputStream input = null;
try {
input = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
OutputStream os = null;
try {
os = item.getOutputStream();
if (input != null) {
int ret = input.read();
while (ret != -1) {
os.write(ret);
ret = input.read();
}
os.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != os) {
os.close();
}
if (null != input) {
input.close();
}
}
return new CommonsMultipartFile(item);
}
*******import ******
此处为上述两种方法的import
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import sun.misc.BASE64Decoder;
import java.io.*;
入参的base64截取
以下为入参截取base64的核心代码
List<Map<String, String>> photoList = new ArrayList<>();
int ch = 0, start, end;
while (ch < paramMap.get("CONTENT").length()) {
Map photoMap = new HashMap();
// 索引出现负数,说明在源字符串指定位置之后已经没有 '{' 或者 '}'
start = paramMap.get("CONTENT").indexOf("<img src="data:image/jpeg;base64,", ch);
//从匹配到图片标签开始截取
ch = start;
end = paramMap.get("CONTENT").indexOf("">", ch);
// substring 内部索引禁止出现负数
if (start == -1 || end == -1) {
break;
}
String tmp = paramMap.get("CONTENT").substring(start + 10, end);
//保存上一次截取时的索引
ch = end + 1;
photoMap.put("bytes", tmp.substring(23));
photoMap.put("start", start + 10);
photoMap.put("end", end);
photoList.add(photoMap);
}
base64转CommonsMultipartFile
以下为调用的核心代码
Base64ToCommonsMultipartFile base64ToCommonsMultipartFile = new Base64ToCommonsMultipartFile();
//base64转为MultipartFile
MultipartFile multFile = base64ToCommonsMultipartFile.base64toMultipartFile(photoList.get(i).get("bytes"));
最后
以上就是机智白猫为你收集整理的base64转File、base64转CommonsMultipartFilebase64转File、base64转CommonsMultipartFile的全部内容,希望文章能够帮你解决base64转File、base64转CommonsMultipartFilebase64转File、base64转CommonsMultipartFile所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复