前端解析文件流

第一种方法,转blob对象

this.$axios({
  url: `/md2api/attachment/c/${val.code}`,
  method: "GET",
  responseType: 'blob',   //设置响应格式
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
  },
})
.then(function (response) {
  let b = new Blob([response.data]);     //拿到文件流下载对象
  let url = window.URL.createObjectURL(b);  //生成文件流下载链接
  let a = document.createElement('a');      //创建一个a标签用来跳转
  a.href = url;                             // a标签 href  赋值 链接  
  a.download = 'ing.jpeg';                  //设置下载文件的文件名和文件格式
  document.body.appendChild(a);             //将标签DOM,放置页面
  a.click();                              
  window.URL.revokeObjectURL(url);     //释放 url 对象内存
  document.body.removeChild(a);        //移除标签节点
})
.catch(function (error) {
  console.log(error);
});

第二种方法(采用 FileReader 实例对象调用Api ,处理文件流)

this.$axios({
  url: `/md2api/attachment/c/${val.code}`,
  method: "GET",
  responseType: 'blob',   //设置响应格式
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
  },
})
.then(function (response) {
  const reader = new FileReader();   //  实例化 FileReader
  reader.readAsDataURL(response.data); //将读取到的文件编码成DataURL
  reader.onload = (e) => {      //调用API onload  文件读取成功时触发   
    //模拟a标签点击
    let a = document.createElement('a');   //创建a标签,
    a.download = Date.parse(new Date()) + '.jpeg';   //设置格式
    a.href = e.target.result;               //下载文件流链接
    document.body.appendChild(a);           //将标签DOM,放置页面
    a.click();
    document.body.removeChild(a);          //移除标签节点
  };
   reader.onerror = (e) => {
    this.$message({
      message: '解析文件发生错误',
      type: 'warning'
    });
   };
   reader.onabort= (e) => {
    this.$message({
      message: '解析文件发生意外终止',
      type: 'warning'
    });
  }
 })
.catch(function (error) {
    console.log(error);
});

FileReader 对象

FileReader 对象 常用 API 回调函数

API 描述
onload 文件读取成功时触发
onerror 解析文件发生错误时触发
onabort 解析文件发生意外终止时触发
onloadend 文件读取完毕之后,成功或者失败都会触发
onloadstart 开始读取时触发
onprogress 读取时触发

FileReader 常用的 API 数据处理钩子函数

API 描述
readAsText() 读取文本文件
readAsBinaryString() 读取任意类型的文件,返回二进制字符串
readAsDataURL() 将读取到的文件编码成 DataURL
abort() 终止读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值