文件流、url下载

blob下载

         请求响应类型设置为blob,动态创建<a> 元素来触发下载操作。

downloadFile() {
  axios({
    url: '/api/download', // 替换为你的接口地址
    method: 'GET',
    responseType: 'blob' // 重要:将响应类型设置为 blob
  }).then(response => {
    const blob = new Blob([response.data])
    const link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob)
    let fileName = ''
        try {
          fileName = decodeURIComponent(res.headers['contentdisposition'].split('filename=')[1])
        } catch (error) {
          console.log('解析文件名称错误')
          fileName = 'undefined.xlsx'
        }
    link.download = fileName
    link.click()
  });
}

url下载 

        将实际的文件 url 作为参数传递给downloadFile()方法,使用 Fetch API 发起 GET 请求,并使用 Blob 对象来处理文件数据,即可完成文件下载。

downloadFile(url) {
    const fileName = url.slice(url.lastIndexOf('/') + 1)
    fetch(url)
    .then((res) => res.blob())
    .then((blob) => {
      const link = document.createElement('a')
      link.href = window.URL.createObjectURL(blob)
      // 下载文件的名称及文件类型后缀
      link.download = fileName
      document.body.appendChild(link)
      link.click()
      // 在资源下载完成后 清除 占用的缓存资源
      window.URL.revokeObjectURL(link.href)
      document.body.removeChild(link)
  })
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值