java文件与base64之间的转化
1、文件转base64工具类
可以将图片、视频转化为base64格式
/**
* 文件转base64
* @param filepath
* @return
*/
public static string convertfiletobase64(string filepath) {
try {
// 读取文件为字节数组
byte[] filebytes = files.readallbytes(paths.get(filepath));
// 将字节数组转换为base64编码的字符串
string base64encodedstring = base64.getencoder().encodetostring(filebytes);
return base64encodedstring;
} catch (exception e) {
e.printstacktrace();
return null;
}
}2、base64转文件工具类
将base64格式的图片、视频下载到本地
/**
* base64转文件
* @param base64string base64字符串
* @param filepath 输出的文件路径
* @param mimetype
* mime类型:
* 视频 video/mp4
* png: image/png
* jpeg: image/jpeg
* gif: image/gif
* bmp: image/bmp
* webp: image/webp
* @return
*/
public static boolean convertbase64tofile(string base64string, string filepath, string mimetype) {
try {
// 将base64编码的字符串转换为字节数组
byte[] filebytes = base64.getdecoder().decode(base64string);
// 创建文件头信息
string header = "data:" + mimetype + ";base64,";
byte[] headerbytes = header.getbytes();
// 合并文件头和文件内容
byte[] combinedbytes = new byte[headerbytes.length + filebytes.length];
system.arraycopy(headerbytes, 0, combinedbytes, 0, headerbytes.length);
system.arraycopy(filebytes, 0, combinedbytes, headerbytes.length, filebytes.length);
// 将字节数组写入文件
files.write(paths.get(filepath), filebytes);
return true;
} catch (exception e) {
e.printstacktrace();
return false;
}
}3、综合案例
package org.ming;
import java.nio.file.files;
import java.nio.file.paths;
import java.util.*;
public class filetobase64converter {
/**
* 文件转base64
* @param filepath
* @return
*/
public static string convertfiletobase64(string filepath) {
try {
// 读取文件为字节数组
byte[] filebytes = files.readallbytes(paths.get(filepath));
// 将字节数组转换为base64编码的字符串
string base64encodedstring = base64.getencoder().encodetostring(filebytes);
return base64encodedstring;
} catch (exception e) {
e.printstacktrace();
return null;
}
}
/**
* 文件转base64流程
*/
public static list<map<string, string>> filetobase64() {
list<map<string, string>> datalist = new arraylist<>();
// 读取的图片路径
string filepath = "d:\\repo\\java_base_test\\static\\img\\gcjcsbjkbjvo.png";
// 读取的视频路径
string videopath = "d:\\repo\\java_base_test\\static\\video\\cs.mp4";
string filetobase64 = convertfiletobase64(filepath);
string videotobase64 = convertfiletobase64(videopath);
if (filetobase64 != null) {
system.out.println("图片转换成功");
datalist.add(new hashmap<string, string>() {{
put("outpath", string.format("d:\\repo\\java_base_test\\static\\img\\gcjcsbjkbjvo_%s.png", new date().gettime()));
put("base64str", filetobase64);
put("mimetype", "image/png");
}});
} else {
system.out.println("图片转换失败");
}
if (videotobase64 != null) {
system.out.println("视频转换成功");
datalist.add(new hashmap<string, string>() {{
put("outpath", string.format("d:\\repo\\java_base_test\\static\\video\\cs_%s.mp4", new date().gettime()));
put("base64str", videotobase64);
put("mimetype", "video/mp4");
}});
} else {
system.out.println("视频转换失败");
}
return datalist;
}
/**
* base64转文件
* @param base64string base64字符串
* @param filepath 输出的文件路径
* @param mimetype
* mime类型:
* 视频 video/mp4
* png: image/png
* jpeg: image/jpeg
* gif: image/gif
* bmp: image/bmp
* webp: image/webp
* @return
*/
public static boolean convertbase64tofile(string base64string, string filepath, string mimetype) {
try {
// 将base64编码的字符串转换为字节数组
byte[] filebytes = base64.getdecoder().decode(base64string);
// 创建文件头信息
string header = "data:" + mimetype + ";base64,";
byte[] headerbytes = header.getbytes();
// 合并文件头和文件内容
byte[] combinedbytes = new byte[headerbytes.length + filebytes.length];
system.arraycopy(headerbytes, 0, combinedbytes, 0, headerbytes.length);
system.arraycopy(filebytes, 0, combinedbytes, headerbytes.length, filebytes.length);
// 将字节数组写入文件
files.write(paths.get(filepath), filebytes);
return true;
} catch (exception e) {
e.printstacktrace();
return false;
}
}
/**
* base64转文件流程
* @param base64string
* @param filepath
*/
public static void base64tofile(list<map<string, string>> datalist) {
for (map<string, string> resmap : datalist) {
boolean flag = convertbase64tofile(resmap.get("base64str"), resmap.get("outpath"), resmap.get("mimetype"));
if (flag) {
system.out.println(resmap.get("outpath") + " 转化成功");
} else {
system.out.println(resmap.get("outpath") + " 转化失败");
}
}
}
public static void main(string[] args) {
// 文件转base64
list<map<string, string>> datalist = filetobase64();
// base64转文件
base64tofile(datalist);
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论