文件下载

199 阅读1分钟

ArrayBuffer是一种存储二进制数据的类型,它可以被视为一段连续的内存区域,可以用来存储任何类型的二进制数据。Blob则是一种用于表示二进制数据的不可变对象,它一般用于处理文件数据等场景。因此,Blob对象通常是由一个或多个ArrayBuffer对象组成的数组,每个ArrayBuffer对象都包含文件数据的一部分。

------- 文件下载  路径下载 ---------
function download(row) {
  let { url } = row
  if(!url) {
    proxy.$modal.msgError("下载地址不存在!");
    return
  }
  let name = url.split('/').slice(-1)[0]
  let a = document.createElement('a');
  url = `/webapi${url}`
  a.style = 'display: none';  // 创建一个隐藏的a标签
  a.download = name;
  a.href = url;
  document.body.appendChild(a);
  a.click();   // 触发a标签的click事件
  document.body.removeChild(a);}

------- 批量-导出员工excel   二进制流  blob  arraybuffer---------
export const exportEmployeeAPI = () => request({
  url: '/sys/user/export',
  responseType: 'blob' // 使用blob二进制文件流
})
const res = await exportEmployeeAPI()
// npm包
import FileSaver from 'file-saver'
FileSaver.saveAs(res, '员工信息表.xlsx')
// js原生
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
const a = document.createElement('a')
a.href = URL.createObjectURL(blob)
a.download = '员工信息表'
a.click()
URL.revokeObjectURL(a.href)
a.remove()

white-spaces:pre 属性 识别文本换行,  label = ' 完成时间 \n 完成时间) '