前端实现导出

前端实现导出的有两种实现方式
1、通过前端重定向,使用浏览器自身导出功能。直接使用后台的链接。通过window.localton.href实现文件的导出。

2、通过Blob文件流的形式通过,接口请求实现文件的导出。

重点说一下第二种的代码实现方式

首先,在封装的请求接口中,要谨记添加responseType:'blob'.

export const getExportFile = (url.params)=>{
 return axios({
    url:url,
    data:params,
    methds: 'post,
    responseType:'blob',
    headers:{
        "Content-Type":"application/json;charset=utf-8",
    }
 })
}

封装导出代码:

/**
* url 请求路径
* fileName 文件名称(需要后缀)
* params  参数
*/


export const handleFile=(url,fileName,params)=>{
  return getExportFile(url,params).then(res)=>{
  if(res.size==0){
    Vue.prototype['$message'].warning('数据为空,请重新筛选数据')
    return 
  }
   // type的格式可以可以设置,可以把appcation/json设置进去,然后设置导出的类型
   const blob = new Blob([res],{ type:'charset=utf-8' }) 
   // 兼容ie和360浏览器
  if(window.navigator && window.navigator.msSaveOrOpenBlob){
   //  fileName需要指定后缀类型例:.doc
    window.navigator.msSaveOrOpenBlob(blob, fileName)
  }else{
   let url = window.URL.createObjectURL(blob)
   const link = document.createElement('a')
   link.style.display = 'none'
   link.href = url
   a.setAttribute('download',fileName)
   document.body.appendChild(link)
   link.click()
   document.body.removeChild(link)   // 删除节点
   window.URL.revekeObjectURL(url)  // 释放blob对象 
  }
 }
}

最后通过调用handleFile,传递url、fileNme、params 需要的参数就可以导出文件

import { handleFile } from 'XXX'

handleFile('XXXX','XXX.doc',params)

文章来源地址https://uudwc.com/A/qByRe

原文地址:https://blog.csdn.net/hxxhetao/article/details/128971124

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年08月05日 11:32
下一篇 2023年08月05日 11:35