前端接收并下载文件流 (blob对象)(word/.doc)

1 根据文件路径下载文件模板,前端拿到的是stream 文件流
2 将文件流下载下来

  • 第一步 当然是写请求方法了,如下
//下载模板
export function download (params) {
    return request({
        url:'/file/s3/file/xxxxxx.doc',//你懂的
        method:'get',
        responseType: 'blob',//重点 重点 重点 
        params
    })
}
//记得在axios相应拦截器中 返回相应的blob
// 判断是否为文件流
    if (response?.headers?.['content-type'] === 'application/octet-stream') {
      return response.data
    }
  • 下一步当然是发送请求了
download().then((result) => {
	//type 的配置对于我 可有可无,写上为了记录下
        const blob = new Blob([result],{ type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8' })
        this.downloadFile('xxxxx.doc',blob);
      }).catch((err) => {
        console.log(err);
      });

因为使用的vue,所以有个全局配置

// 下载
Vue.prototype.downloadFile = (fileName, blob) => {
  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 对象
    URL.revokeObjectURL(eLink.href)
    document.body.removeChild(eLink)
  } else {
    // IE10+下载
    navigator.msSaveBlob(blob, fileName)
  }
}
其他的可以参考如下博文

两个方案呢哦
可以看看的
三人行必有我师焉

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值