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

发布于 2022-09-11 23:32:13 字数 825 浏览 15 评论 0

现在的代码

/*
拿到并储存文件后缀
*/
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实现方法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各自安好 2022-09-18 23:32:13

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文