|
vue,js,fetch请求数据流下载文件
假设现在有一后台API提供访问,那么要想前端进行下载head头需要设置如下类型
- Content-Type:application/octet-stream
复制代码
下面两个head头建议也添加一下,虽然不是必须的(注意filename后面如果有中文,需要进行urlencode,否则会报错)
- Access-Control-Expose-Headers:Content-Disposition
- Content-Disposition:attachment;filename=rename.xlsx
复制代码
前端部分:
- fetch('/api', function (response) {
- response.blob().then((blob) => {
- saveBlobAs(blob, 'result.xls')
- })
- }, function (result) {
- console.info("获取数据失败" + result.message);
- })
- // 保存bolb的方法
- function saveBlobAs (blob, filename) {
- if (window.navigator.msSaveOrOpenBlob) {
- navigator.msSaveBlob(blob, filename)
- } else {
- const anchor = document.createElement('a')
- const body = document.querySelector('body')
- anchor.href = window.URL.createObjectURL(blob)
- anchor.download = filename
- anchor.style.display = 'none'
- body.appendChild(anchor)
- anchor.click()
- body.removeChild(anchor)
- window.URL.revokeObjectURL(anchor.href)
- }
- }
复制代码 这样就完事了
|
|