1.ajax请求将文件流下载下来
2.将下载的文件流转化为blob数据
3.通过 window.URL.createObjectURL(blob)将blob转化为url
4.通过动态生成a标签 模拟点击事件下载
this.$http({ // 通过获取后端数据
url: this.$http.adornUrl(`/strUrl/${id}`),
method: 'get',
responseType: 'blob', // blob数据类型
timeout: 1000 * 600 // 响应时间
}).then(res => {
console.log('res', res)
if (res.status === 200) {
const blob = new Blob([res.data], { type: `application/octet-stream` }) // 创建 blob数据
const downloadElement = document.createElement('a') // 创建一个a标签
const href = window.URL.createObjectURL(blob) // 将blob转成 url地址
downloadElement.href = href // 将创建的a标签的href赋值url
downloadElement.download = `${filename}` // 导出的名字
downloadElement.click() // 默认点击触发 a标签
} else {
this.$message.error('下载出错!')
}
})
iframe下载
<el-button size="mini" @click="handleExport(scope.row)">导出</el-button>
//method方法:
handleExport(row) {
var elemIF = document.createElement('iframe')
elemIF.src = 'user/downloadExcel?snapshotTime=' + formatDate(new Date(row.snapshotTime), 'yyyy-MM-dd hh:mm') +
'&category=' + row.category
elemIF.style.display = 'none'
document.body.appendChild(elemIF)
}