import axios from 'axios'
import { message } from 'ant-design-vue'
const getFile = ({ url, params, tail, type }) => {
let data = type ? 'data' : 'params'
type = type || 'get'
return new Promise((resolve, reject) => {
axios({
headers: {
'hello': 'world'
},
withCredentials: true,
url,
method: type,
[`${data}`]: params,
responseType: 'blob'
}).then(res => {
console.log('export_file got res === ', res)
let resHeaders = res.headers
let resFileName = resHeaders['content-disposition'] || ''
let fileName = decodeURIComponent(resFileName.match(/filename\*\=(.*)/)[1]).split("utf-8''")[1]
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
const a = document.createElement('a')
a.href = URL.createObjectURL(blob)
a.download = `${fileName}${tail}`
a.click()
URL.revokeObjectURL(a.href)
a.remove()
}).catch(err => {
console.log('export_file catch error === ', err)
message.error('文件导出失败')
reject(`faild: ${err}`)
})
})
}
export default getFile
网友评论