导出功能
1、书写函数并抛出
import axios from 'axios'
import { getToken } from '@/utils/auth'
const postDownload = function(url, params = {}, data = {}, isFormData = false) {
return new Promise((resolve, reject) => {
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
if (isFormData) {
const formData = new FormData()
for (const key in params) {
formData.append(key, params[key])
}
params = formData
}
axios.defaults.headers['token'] = getToken()
axios.post(process.env.VUE_APP_UPLOAD_FILE_API + url, params, {
params: data,
responseType: 'blob'
})
.then(response => {
const headers = response.headers
const name = headers['content-disposition']
let filename = ''
let t = /filename="([^;]*);?"/i.exec(name)
t === null && (t = /filename=([^;]*);?/i.exec(name))
if (t !== null && t.length > 1) {
filename = decodeURIComponent(t[1])
}
console.log('--headers, name, t, filename--', headers, name, t, filename)
const blob = new Blob([response.data], {
type: 'application/octet-stream'
})
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = filename
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
resolve(response.data)
}, err => {
reject(err)
})
})
}
export {
postDownload
}
1.1 getToken()
2、引入导出函数并使用
import { postDownload } from '@/api/dataStatistics/exportFile'
exportClick() {
const url = 'xxxxxxx'
postDownload(url).then(() => {
}