1、本地文件转换成Base64字符串
public static String convertFileToBase64(String imgPath) {
byte[] data = null;
// 读取文件字节数组
try {
InputStream in = new FileInputStream(imgPath);
System.out.println("文件大小(字节)="+in.available());
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组进行Base64编码,得到Base64编码的字符串
BASE64Encoder encoder = new BASE64Encoder();
String base64Str = encoder.encode(data);
return base64Str;
}
2、Base64位转文件
/**
* 对字节数组字符串进行Base64解码并生成文件
* @param fileStr 文件base64位数据
* @param fileFilePath 保存文件全路径地址
* @return
*/
public static boolean generateBase64StringToFile(String fileStr,String fileFilePath){
if (fileStr == null) //文件base64位数据为空
return false;
try
{
//Base64解码
byte[] b = Base64.decodeBase64(fileStr);
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{//调整异常数据
b[i]+=256;
}
}
//生成文件
OutputStream out = new FileOutputStream(fileFilePath);
out.write(b);
out.flush();
out.close();
return true;
}
catch (Exception e)
{
return false;
}
}
3、测试
public static void main(String[] args) {
//测试convertFileToBase64 文件转Base64方法
String filePath = "D:/home/ynzc/uploadPath/1111/1.pdf";//测试文件的全路径
String fileBase64 = XmlInterfaceUtils.convertFileToBase64(filePath); //pdf文件转换成Base64字符串
System.out.println(fileBase64);
}
public static void main(String[] args) {
//测试base64位转文件方法
String base64 = ""; //待转换文件的base64位数据
String path = "D:/home/ynzc/uploadPath/1111/2.pdf"; //转换后文件所在的目录和文件名
XmlInterfaceUtils.generateBase64StringToFile(base64,path);
System.out.println("base64位转文件成功");
}