小索同学 2018-11-23 08:41 采纳率: 0%
浏览 4805

通过ajax下载文件流本地封装的word和excel有问题

因为后台请求都得在header里面加token,普通的跳转url header加不上token会提示没有权限无法下载,
后来找见一篇通过ajax下载文件转成blob对象本地封装的办法,但是每次打开都会提示图片说明
图片说明

            代码如下

            ```
                downloadWord(row.id)
    .then((res) => { // 处理返回的文件流
      const content = res.data
      let temp = res.headers["content-disposition"]
      let isExcel = temp.indexOf(".xlsx") > 0 || temp.indexOf(".xls") > 0
      let isWord = temp.indexOf(".docx") > 0 || temp.indexOf(".doc") > 0
      let file = {}
      if(isExcel){
        file.type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
        file.name = temp.indexOf(".xlsx") > 0 ? 'xlsx' : 'xls'
      }else if(isWord){
        file.name = temp.indexOf(".docx") > 0 ? 'docx' : 'doc'
        file.type = 'application/msword;charset=UTF-8'
      }
      // const blob = new Blob([content], {type: res.data.type})
      const blob = new Blob([content], {type: file.type})
      const fileName = `${row.title}.${file.name}`
      if ('download' in document.createElement('a')) { // 非IE下载
        const elink = document.createElement('a')
        elink.download = fileName
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href) // 释放URL 对象
        document.body.removeChild(elink)
      } else { // IE10+下载
        navigator.msSaveBlob(blob, fileName)
      }
  })
        ```
  • 写回答

1条回答

  • devmiao 2018-11-23 15:26
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记