• vue项目中实现文件下载功能



    /*
    * * 下载文件调用 * @param 接口返回数据 文件名 */
    export function downloadFile(res, fileName) {
      if (!res) {
        return
      }
      if (window.navigator.msSaveBlob) {  // IE以及IE内核的浏览器
        try {
          window.navigator.msSaveBlob(res, fileName)  // res为接口返回数据,这里请求的时候已经处理了,如果没处理需要在此之前自行处理var data = new Blob([res.data]) 注意这里需要是数组形式的,fileName就是下载之后的文件名
          // window.navigator.msSaveOrOpenBlob(res, fileName);  //此方法类似上面的方法,区别可自行百度
        } catch (e) {
          console.log(e)
        }
      } else {
        let url = window.URL.createObjectURL(new Blob([res]))
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        link.setAttribute('download', fileName)// 文件名
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link) // 下载完成移除元素
        window.URL.revokeObjectURL(url) // 释放掉blob对象
      }
    }
     

     页面调用  调用时传入后端返回的res和文件名

    下载文件的具体步骤(以谷歌浏览器为例)

    • 点击下载按钮,请求后台接口,获取后台传输过来的数据data
    • axios中有个方法可以把文件流对象转blob
    • 根据window.URL.createObjectURL方法生成一个链接
    • 创建一个a标签元素
    • 设置属性,a.download = '你的文件名字',a.href = '刚刚生成的URL'
    • 使这个标签触发点击事件
    • 移除元素
  • 相关阅读:
    php_memcache扩展
    window+nginx+php
    服务启动Apache服务,错误Parent: child process exited with status 3 -- Aborting.解决
    PHP文件下载
    gvim
    单车家族 结对项目三
    单车家族 结对项目二
    共享单车 网络定位
    注册页面 android 仿摩拜单车共享单车进度条实现StepView
    结对项目 ——功能结构图
  • 原文地址:https://www.cnblogs.com/Hhuizi/p/11511932.html
Copyright © 2020-2023  润新知