// 文件流下载
export function downloadFileBlob(url, fileName, params) {
return axios({
url,
params: params,
method: 'get',
responseType: 'blob',
getResponse: true,
paramsSerializer: (params) => {
return qs.stringify(params, { indices: false })
},
}).then((dataFile) => {
fileName = dataFile.fileName || fileName
const data = dataFile.data ? dataFile.data : dataFile
let reader = new FileReader()
var res = {}
reader.readAsText(data, 'utf-8')
reader.onload = function () {
try {
res = JSON.parse(reader.result) || {}
if (!res.success && typeof res !== 'number') {
Vue.prototype.$msgError.error(res.message)
return
}
} catch (e) {}
if (!data || data.size === 0) {
Vue.prototype.$msgError.error('文件下载失败')
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data]), fileName)
} else {
let url = window.URL.createObjectURL(new Blob([data]))
let 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) //下载完成移除元素
window.URL.revokeObjectURL(url) //释放掉blob对象
}
}
})
}
文件流下载方案
最新推荐文章于 2024-06-10 21:49:25 发布