JS实现将文件和base64的相互转换
1. JS将文件转成base64
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS将文件转成base64</title>
<style></style>
</head>
<body>
<input type="file" id="fielinput" />
<script>
window.onload = function () {
// 获取文件dom
var input = document.getElementById("fielinput");
// 判断该浏览器是否支持FileReader
if (typeof (FileReader) === 'undefined') {
console.log("你的浏览器不支持 FileReader");
input.setAttribute('disabled', 'disabled');
} else {
// 为file添加事件监听
input.addEventListener('change', parseFileToBase64, false);
}
}
// 获取文件对象并转换成base64
function parseFileToBase64() {
// 获取到文件对象
var file = this.files[0];
// 获取FileReader实例
var reader = new FileReader();
// 将文件加载进入
reader.readAsDataURL(file);
reader.onload = function (e) {
// 转换完成输出该文件base64编码
console.log(this.result);
}
}
</script>
</body>
</html>
2. JS将base64转成文件,并进行下载获取
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS将base64转换成文件并下载获取</title>
<style>
</style>
<script>
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
}
function downloadFile(url,name='文件默认名'){
var a = document.createElement("a")
a.setAttribute("href",url)
a.setAttribute("download",name)
a.setAttribute("target","_blank")
let clickEvent = document.createEvent("MouseEvents");
clickEvent.initEvent("click", true, true);
a.dispatchEvent(clickEvent);
}
function downloadFileByBase64(base64,name){
var myBlob = dataURLtoBlob(base64)
var myUrl = URL.createObjectURL(myBlob)
downloadFile(myUrl,name)
}
var yourBase64 = '输入文件base64编码'
var youFileName = '输入你的文件名'
downloadFileByBase64(yourBase64, youFileName)
</script>
</head>
<body>
</body>
</html>
如果需要将整个文件夹全部转换成base64,可以将该文件夹压缩,然后按上述方法将该压缩文件转换成base64,将该base64转成压缩文件时,注意它的名称定义,应定义成 ***.zip。同理你若转换的是txt文件,那名称定义时应定义为 ***.txt。所以你将什么类型的文件转成base64,那么你将该base64转成文件时,名称的后缀名要保持不变。