tool.js (用来存放工具函数)
import axios from 'axios'
export const downloadFile = (method, url, config, fileName) => {
let _data = null
let _params = null
if (method === 'GET' || method === 'get') {
_params = config.params
} else {
_data = config.data
}
return axios({
url,
method,
params: _params,
data: _data,
responseType: 'blob',
headers: {
// 'X-Token': localStorage.getItem('token') || '',
"X-Nideshop-Token" : window.sessionStorage.getItem('token')
},
})
.then(res => {
console.log(res)
const str = res.headers['content-disposition']
if (!res || !str) {
// error(res.message || '下载失败!')
console.log('下载失败!')
return
}
if (res && res.status === 200 && res.data) {
const { data, headers } = res
console.log('fileName', fileName)
const blob = new Blob([data], { type: headers['content-type'] })
const dom = document.createElement('a')
const downUrl = window.URL.createObjectURL(blob)
dom.href = downUrl
dom.download = decodeURIComponent(fileName)
dom.style.display = 'none'
document.body.appendChild(dom)
dom.click()
dom.parentNode.removeChild(dom)
window.URL.revokeObjectURL(url)
} else {
// error(res.message || '下载失败!')
console.log('下载失败!')
}
})
.catch(err => {
// error(err || '下载失败!')
console.log('下载失败!')
})
}
调用
import {downloadFile} from '../plugins/tool.js'
downloadFile('post','media',{data:{ path:rowInfo.path, fileName:rowInfo.fileName }},rowInfo.fileName)