使用FileReader 对象转换 (该对象用于读取单个文件),接收File对象或Blob对象
base64下载
针对不同类型文件,FileReader使用不同的方法读取
- readAsBinaryString(Blob| File) :返回二进制字符串
- readAsText(Blob | File,opt_encoding):返回文本字符串
- readAsDataURL(Blob | File) : 返回一个基于base64 编码的data-uri 对象
- readAsArrayBuffer(Blob | File):返回一个ArrayBuffer(数组缓存)对象
- abort():用于中止文件上传
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 文件下载
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