1.通过后端接口返回url直接下载:
// 直接下载
window.location.href = url
// 通过跳转其他页面下载
window.open(url, '_blank')
2.通过创建a标签下载
let a = document.createElement('a') // 创建a标签
a.style.display = 'none'
a.setAttribute('download', '文件名') // 下载文件的名称及文件类型后缀
a.href = path // 指定下载链接
a.click() // 触发下载
a = null
3.后端返回的是文档流(文档过大可以减小请求时间)
如果是文档流的形式记得在请求的时候加上responseType: 'blob'和 getResponse: true
// 请求时
export function orderUploadExcel(params) {
return request({
url: '/sales/export_sales/',
method: 'get',
params,
responseType: 'blob',
getResponse: true
})
}
// 下载
const url = window.URL.createObjectURL(
new Blob([data], {
type:'application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet;charset=utf-8'
})
)
const link = document.createElement('a')
link.href = url
const fileName = '销售订单' + getDateTime(new Date()) + '.xlsx'
link.setAttribute('download', fileName) // 下载文件的名称及文件类型后缀
document.body.appendChild(link)
link.click()
document.body.removeChild(link) // 下载完成移除元素
window.URL.revokeObjectURL(url) // 释放掉blob对象