Base64与文件互转:分别在Java、JS中的转换

今天遇到在Java后台将本地文件转成Base64,然后传至前端ajax异步请求结果,并手动保存文件。我使用的是 java1.8

1、Java中 — — 文件与Base64相互转换

文件 ——> Base64,下面两行代码即可

byte[] b = Files.readAllBytes(Paths.get(filePath));//filePath为D://123.*,*表示任何类型文件
String data_base64 = Base64.getEncoder().encodeToString(b);//取得文件Base64数据

Base ——> 文件,这个还没试过,应该没问题

public String decryptByBase64(String base64, String filePath) {
	if (base64 == null && filePath == null) {
        return "生成文件失败,请给出相应的数据。";
	}
	try {
		Files.write(Paths.get(filePath),             
        Base64.getDecoder().decode(base64),StandardOpenOption.CREATE);
	} catch (IOException e) {
		e.printStackTrace();
	}
	return "指定路径下生成文件成功!";
}

2、JS中 — — 文件与Base64相互转换

文件 ——> Base64



function getBase64(element) {
	// var file = element.files[0];
	var file = document.getElementById("file").files[0]
	var reader = new FileReader();
	reader.readAsDataURL(file);
	reader.onload = function (e) { 
		var data_base64 = this.result; //JS读取后是有头信息的data:image/jpeg;base64,头信息后面才是文件的Base64数据
		console.log(data_base64)
	}
}

Base ——> 文件

/**
*Base64字符串转二进制
*/
function dataURLtoBlob(dataurl) {
	bstr = atob(dataurl),
	n = bstr.length,
	u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	return new Blob([u8arr]);
}


var blob = dataURLtoBlob("去除头信息的纯Base64数据");
var data = new Blob([blob]);
var downloadUrl = window.URL.createObjectURL(data);
var result=document.getElementById("result");    
var anchor = document.createElement("a");
anchor.href = downloadUrl;
anchor.download = "下载保存文件到名称.*";//*表示可以是任意类型的文件
anchor.click();
window.URL.revokeObjectURL(data);

 

你可能感兴趣的:(Java,js)