众所周知,a标签中download属性可以更改下载文件的文件名。
但是只适用于同源文件,如果是跨域的话,download属性就会失效。
解决方法一:使用XMLHttpRequest
downloadFile(url, fileName) {
var xml = new XMLHttpRequest()
xml.open('GET', url, true)
xml.responseType = 'blob'
xml.onload = function() {
var url = window.URL.createObjectURL(xml.response)
var a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
}
xml.send()
},
解决方法二:使用axios
import axios from 'axios'
downloadFile(url, fileName) {
axios
.get(url, { responseType: 'blob' })
.then(res => {
const blob = new Blob([res.data])
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = fileName
link.click()
URL.revokeObjectURL(link.href)
})
.catch(console.error)
},