下载文件流

发布时间 2023-07-11 09:45:45作者: 挽你手

下载xls文件:

downloadFile.js
export let downloadFile = function (res, filename) {
  // 将blob对象转为一个URL
  let blobURL = window.URL.createObjectURL(res)
  // 创建一个a标签
  let tempLink = document.createElement('a')
  // 隐藏a标签
  tempLink.style.display = 'none'
  // 设置a标签的href属性为blob对象转化的URL
  tempLink.href = blobURL
  // 给a标签添加下载属性 decodeURI 解码
  tempLink.setAttribute('download', decodeURI(filename))
  if (typeof tempLink.download === 'undefined') {
    tempLink.setAttribute('target', '_blank')
  }
  // 将a标签添加到body当中
  document.body.appendChild(tempLink)
  // 启动下载
  tempLink.click()
  // 下载完毕删除a标签
  document.body.removeChild(tempLink)
  window.URL.revokeObjectURL(blobURL)
}
import { downloadFile } from "@/utils/downloadFile";

<el-button @click="exportFile">下载文件</el-button>

methords:{
       exportFile(){
                personWycExport(参数).then((res) => {
                     downloadFile(res,'名称'); 
               });
        }        
} 

下载word文档:


downloadFile.js
export function downloadWord(data, fileName, fileSuffix) {
  let fileTypeMime = '' // 文件 mime 类型,移动端必传,否则下载不成功;pc端可传可不传
  switch (fileSuffix) { // 获取后缀对应的 mime
    case 'png':
      fileTypeMime = 'image/png';
      break;
    case 'doc':
      fileTypeMime = 'application/msword';
      break;
    case 'docx':
      fileTypeMime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
      break;
    case 'jpg':
    case 'jpeg':
      fileTypeMime = 'image/jpeg';
      break;
    case 'gif':
      fileTypeMime = 'image/gif';
      break;
    case 'svg':
      fileTypeMime = 'image/svg+xml';
      break;
    case 'tif':
    case 'tiff':
      fileTypeMime = 'image/tiff';
      break;
    case 'txt':
      fileTypeMime = 'text/plain';
      break;
    case 'ppt':
      fileTypeMime = 'application/vnd.ms-powerpoint';
      break;
    case 'pptx':
      fileTypeMime = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
      break;
    case 'xls':
      fileTypeMime = 'application/vnd.ms-excel';
      break;
    case 'xlsx':
      fileTypeMime = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
      break;
    case 'zip':
      fileTypeMime = 'application/zip';
      break;
    case '7z':
      fileTypeMime = 'application/x-7z-compressed';
      break;
  }

  let blob = window.URL.createObjectURL(new Blob([data], {
    'type': fileTypeMime
  }))
  let link = document.createElement('a')
  link.style.display = 'none'
  link.href = blob
  link.setAttribute('download', fileName + fileSuffix)
  document.body.appendChild(link)
  link.click()
  document.body.removeChild(link) //下载完成移除元素
  window.URL.revokeObjectURL(blob) //释放掉 blob 对象
}
import { downloadFile } from "@/utils/downloadFile";

<el-button @click="exportFile">下载文件</el-button>

methords:{
       exportFile(){
                personWycExport(参数).then((res) => {
                     downloadWord(res, "名称", ".docx");
               });
        }        
}