前端下载文件方法很多,url是文件地址
方法1:打开一个新的页面
window.open(url);
方法2:直接弹出下载窗口,但是当下载文件是txt格式时,浏览器会自动打开
handleDownload(row, index) {
const link = document.createElement('a')
link.target = '_blank'
link.href = process.env.VUE_APP_IMG_DOMAIN + '/' + row.task_url
const new_file_name = this.getDownLoadFileName(row, link.href)
link.setAttribute('download', new_file_name)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(row.task_url)
}
getDownLoadFileName(row, url) {
// 获取url后缀名
const ext = filename.split('.').pop()
// 新的文件名:任务名(任务id)_用户id_用户任务id.ext
let time = new Date().toLocaleDateString();
return row.book_name + time + ext
}
方法3:下载文件并保存到本地
handleDownload(row, index) {
const x = new window.XMLHttpRequest()
const url = process.env.VUE_APP_IMG_DOMAIN + '/' + row.task_url
const filename = this.getDownLoadFileName(row, url)
x.open('GET', url, true)
x.responseType = 'blob'
x.onload = () => {
const url = window.URL.createObjectURL(x.response)
const a = document.createElement('a')
a.href = url
a.download = filename
a.click()
}
x.send()
}