文件流下载
downFile(suffix, res, data) {
const typename = this.addNameSuffix(
suffix || 'application/x-download'
)
let blob = new Blob([res], { type: typename })
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
let fileName = '数据导出' + moment().format('YYYY-MM-DD HH:mm:ss') + '.' + suffix
if (data) {
let { name, url } = data
if (url && (!name || String(name).indexOf('.') < 0)) {
fileName = url
}
if (name) {
fileName = name
}
}
link.download = fileName
document.body.appendChild(link)
link.click()
},
addNameSuffix(type) {
let suffixName = ''
switch (type.toLowerCase()) {
case 'png':
suffixName = 'image/png'
case 'rar':
suffixName = 'application/x-rar-compressed'
case 'jpg':
suffixName = 'image/jpeg'
case 'jpeg':
suffixName = 'image/jpeg'
case 'svg':
suffixName = 'image/svg+xml'
case 'tgz':
suffixName = 'application/x-compressed'
break
case 'docx':
suffixName =
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
break
case 'doc':
suffixName = 'application/msword'
break
case 'pdf':
suffixName = 'application/pdf'
break
case 'xlsx':
suffixName =
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
break
case 'xls':
suffixName = 'application/vnd.ms-excel'
break
case 'png':
suffixName = 'image/png'
break
case 'zip':
suffixName = 'application/zip'
break
}
return suffixName
},
a标签下载(设置oss代理)
downFileName(fileName, fileUrl) {
if (fileName) return fileName
return fileUrl
},
aLabelDown(fileName, fileUrl) {
const proxy = process.env.VUE_APP_OSS_PROXY_URL
let url = fileUrl.replace(proxy, '')
console.log(url, 11)
let name = this.downFileName(fileName, fileUrl)
setTimeout(() => {
const a = document.createElement('a')
a.href = `/oss/${url}`
a.download = name
document.body.appendChild(a)
a.click();
URL.revokeObjectURL(`/oss/${url}`);
a.remove();
}, 1000);
},