后端给了一个二进制流文件地址,我要如何在前端实现下载功能呢?

现在的代码

/*
拿到并储存文件后缀
*/
response hoader {
    content-disposition: attachment;filename=xxx.xlsx
}

const disposition = response.headers['content-disposition']
const suffix = disposition.split('.').slice(-1)[0]
Vue.ls.set('DOWNLOAD_FILE_NAME', `.${suffix}`)

下面我准备用拿到的suffix匹配MIME类型

/*
模拟点击a标签效果
*/
const suffix = Vue.ls.get('DOWNLOAD_FILE_NAME')
const blob = new Blob([value], {
    type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
})
const url = window.URL.createObjectURL(blob)
const 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)

期望有更好de实现方法

阅读 2.5k
1 个回答

这样挺好了,不然后端干嘛要传流,直接文件链接不是更好?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题