下载、导出
- 封装
import request from '@/plugins/request';
export default {
// 导出流数据函数
exportExcel(data, fileName, typeInfo) {
const link = document.createElement('a')
var ext = /\.[^\.]+$/.exec(fileName);
const blob = new Blob([data], {
type: typeInfo ? this.getResponseType(ext[0].split('.')[1]) : 'image/png'
})
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.download = fileName // 下载的文件名
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
},
//下载
downloadAttachment(options, seucFun, errorFun) {
request({
url: options.url,
method: 'get',
responseType: 'blob'
}).then((res) => {
var ext = /\.[^\.]+$/.exec(options.fileName);
const link = document.createElement('a')
const blob = new Blob([res], {
type: this.getResponseType(ext) //'application/vnd.ms-excel'
})
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.download = options.fileName // 下载的文件名
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
if (seucFun) {
seucFun();
}
}).catch((err) => {
this.$Message.error(err.message);
if (errorFun) {
errorFun(err);
}
});
},
getResponseType(ext) {
var responseType = {
'abw': 'application/x-abiword',
'arc': 'application/x-freearc',
'avi': 'video/x-msvideo',
'azw': 'application/vnd.amazon.ebook',
'bin': 'application/octet-stream',
'bmp': 'image/bmp',
'bz': 'application/x-bzip',
'bz2': 'application/x-bzip2',
'csh': 'application/x-csh',
'css': 'text/css',
'csv': 'text/csv',
'doc': 'application/msword',
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'eot': 'application/vnd.ms-fontobject',
'epub': 'application/epub+zip',
'gif': 'image/gif',
'htm': 'text/html',
'html': 'text/html',
'ico': 'image/vnd.microsoft.icon',
'ics': 'text/calendar',
'jar': 'application/java-archive',
'jpeg': 'image/jpeg',
'jpg': 'image/jpeg',
'js': 'text/javascript',
'json': 'application/json',
'jsonld': 'application/ld+json',
'mid': 'audio/midi audio/x-midi',
'midi': 'audio/midi audio/x-midi',
'mjs': 'text/javascript',
'mp3': 'audio/mpeg',
'mpeg': 'video/mpeg',
'mpkg': 'application/vnd.apple.installer+xml',
'odp': 'application/vnd.oasis.opendocument.presentation',
'ods': 'application/vnd.oasis.opendocument.spreadsheet',
'odt': 'application/vnd.oasis.opendocument.text',
'oga': 'audio/ogg',
'ogv': 'video/ogg',
'ogx': 'application/ogg',
'otf': 'font/otf',
'png': 'image/png',
'pdf': 'application/pdf',
'ppt': 'application/vnd.ms-powerpoint',
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'rar': 'application/x-rar-compressed',
'rtf': 'application/rtf',
'sh': 'application/x-sh',
'svg': 'image/svg+xml',
'swf': 'application/x-shockwave-flash',
'tar': 'application/x-tar',
'gz': 'application/x-tar',
'tif': 'image/tiff',
'tiff': 'image/tiff',
'ttf': 'font/ttf',
'txt': 'text/plain',
'vsd': 'application/vnd.visio',
'wav': 'audio/wav',
'weba': 'audio/webm',
'webm': 'video/webm',
'webp': 'image/webp',
'woff': 'font/woff',
'woff2': 'font/woff2',
'xhtml': 'application/xhtml+xml',
'xls': 'application/vnd.ms-excel',
// 'xls':'application/x-xls',
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'xml': 'text/xml',
'xul': 'application/vnd.mozilla.xul+xml',
'zip': 'application/zip',
'3gp': 'video/3gpp',
'3g2': 'video/3gpp2',
'7z': 'application/x-7z-compressed',
};
// if (responseType.hasOwnProperty(ext)) {
// console.log('文件类型[' + ext + ']未找到ResponseType');
// return ext;
// }
return responseType[ext];
},
}
2、使用
//下载
exports.downloadAttachment({url, fileName: '基础数据包.zip'});
//导出
exports.exportExcel(res, "excel名称.xls", "true");