vue如何下载流文件
程序员文章站
2022-05-17 19:06:12
...
下面便是接口返回的流文件类型>
首先封装一个方法,文件的流传参进去
download (data) { //data是文件流
if (!data) {
return
}
let blob = new Blob([data], {
type:
'application/zip' //文件类型
})
let url = window.URL.createObjectURL(blob)
let fileName = 'fileName' //文件名称
if ('download' in document.createElement('a')) {
const a = document.createElement('a')
a.href = url
a.download = fileName
a.style.display = 'none'
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(a.href)
document.body.removeChild(a)
} else {
navigator.msSaveBlob(blob, fileName)
}
}
这时候会发现下载的zip文件已损坏,是空的,注意下面代码
export const export = (params) => {
return axios.request({
url: '/export',
params: {
id: params.id
},
responseType: 'blob',
method: 'get'
})
}
XMLHttpRequest.responseType 属性是一个枚举类型的属性,返回响应数据的类型。它允许我们手动的设置返回数据的类型。如果我们将它设置为一个空字符串,它将使用默认的"text"类型。
以下为responseType的属性值
参考自https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/responseType