JS中的文件流

创建Blob

 new Blob(array);

Blob转化为URL

//DomString,<a href='下载文件URL' /> 同步
 window.URL.createObjectURL(blob);
 window.URL.revokeObjectURL(objectURL);//释放

怎么读取Blob文件

 new FileReader(blob)
   //Base64格式,img src可以直接展示<a href='下载文件URL' /> 异步
  .readAsDataURL();
  .readAsText();//字符串格式
  .readAsArrayBuffer();//生成ArrayBuffer格式
  .onLoad(e => {}); //文件成功读取

怎么创建ArrayBuffer

 blob.arrayBuffer();//二进制缓冲区

切片多个Blob

 blog.slice();

File继承Blob

eg:

下载excel, 读取后台返回的文件流

  1. 请求参数:config中添加
{responseType: 'blob'}
  1. 响应:
    image
const fileName = headers['content-disposition'].split(';')[1].split('=')[1];
//const url = URL.createObjectURL(res.data);//同步,释放
const reader = new FileReader()
reader.readAsDataURL(res.data)
reader.onload = (e) => {
   const aEl = document.createElement('a')
   aEl.download = window.decodeURIComponent(fileName)
   aEl.href = e.target.result
   document.body.appendChild(aEl)
   aEl.click()
   document.body.removeChild(aEl)
}
posted @ 2023-04-25 12:16  躺尸的大笨鸟  阅读(309)  评论(0)    收藏  举报