Use FileReader object conversion (this object is used to read a single file), receive File object or Blob object
base64 download
For different types of files, FileReader uses different methods to read
- readAsBinaryString(Blob| File) : returns a binary string
- readAsText(Blob | File, opt_encoding): returns a text string
- readAsDataURL(Blob | File) : returns a base64-encoded data-uri object
- readAsArrayBuffer(Blob | File): returns an ArrayBuffer (array buffer) object
- abort(): used to abort file upload
var reader = new FileReader()
// 传入一个参数对象即可得到基于该参数对象的文本内容
//可用于<img>标签中的src属性,从而达到图片预览的效果
reader.rederAsDataURL(file); //base64 编码对象
reader.onload= function(e){
// 文件里的文本会在这里被打印出来
console.log(e.target.result)
var base64 = reader.result; //获取到base4
//base64 转化url
var bstr = atob(base64), //解析 base-64 编码的字符串
n = bstr.length,
u8arr = new Uint8Array(n); //创建初始化为0的,包含length个元素的无符号整型数组
while (n--) {
u8arr[n] = bstr.charCodeAt(n); //返回字符串第一个字符的 Unicode 编码
}
let blob = new Blob([u8arr]); // 这里得到 Blob
let url = URL.createObjectURL(blob);//这个新的URL 对象表示指定的 File 对象或 Blob 对象
let a = document.createElement('a') //创建一个a标签
a.href = url;
a.download = file.name;
a.click();
URL.revokeObjectURL(a.href); //释放之前创建的url对象
}
file file download
let file = new File([data], "fileName.obj");//创建一个file文件
//let blob = new Blob([data]);
let aTag = document.createElement('a');//创建一个a标签
aTag.download = file.name;
let href = URL.createObjectURL(file);//获取url
aTag.href = href;
aTag.click();
URL.revokeObjectURL(href);//释放url