vue下载导出封装

下载、导出

  1. 封装
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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值