前端文件下载方法

function switchMime(fileName) {
let suffix = fileName.split('.')[fileName.split('.').length - 1]
let code = 'application/msword'
switch (suffix) {
case 'doc':
code = 'application/msword'
break
case 'docx':
code =
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
break
case 'pdf':
code = 'application/pdf'
break
case 'ppt':
code = 'application/vnd.ms-powerpoint'
break
case 'pptx':
code =
'application/vnd.openxmlformats-officedocument.presentationml.presentation'
break
case 'rar':
code = 'application/x-rar-compressed'
break
case 'xls':
code = 'application/vnd.ms-excel'
break
case 'xlsx':
code = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
break
case 'zip':
code = 'application/zip'
break
case 'txt':
code = 'text/plain'
break
default:
break
}
return code
}
this.axios({
method: 'post',
url: '/aeValueSetsEdit/download2',
responseType: 'blob'
}).then(function(res) {
let temp = res.headers['content-disposition']
.split(';')[1]
.split('filename=')[1] //从返回头取出文件名称
let fileNameStr = unescape(decodeURI(temp)) //中文文件名需解码
let fileName = fileNameStr.replace(/\"/g, '').replace(/\'/g, '')
let blob = new Blob([res.data], {
type: switchMime(fileName)
})
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName)
} else {
var link = document.createElement('a')
document.body.appendChild(link)
link.href = window.URL.createObjectURL(blob)
link.download = fileName
link.click()
//释放内存
window.URL.revokeObjectURL(link.href)
document.body.removeChild(link)
}
})

posted @ 2022-08-08 09:48  javazmd  阅读(148)  评论(0编辑  收藏  举报