zoukankan      html  css  js  c++  java
  • 根据Blob流(即后端的Stream文件类型格式)下载文件

    接口调用

    先看看这个接口的返回值

    前端处理

    //根据文件后缀名来映射Blob Type
    const typeDic = {
        docx: 'application/msword',
        doc: 'application/msword',
        bin: 'application/octet-stream',
        exe: 'application/octet-stream',
        so: 'application/octet-stream',
        dll: 'application/octet-stream',
        pdf: 'application/pdf',
        ai: 'application/postscript',
        xls: 'application/vnd.ms-excel',
        xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        ppt: 'application/vnd.ms-powerpoint',
        dir: 'application/x-director',
        js: 'application/x-javascript',
        swf: 'application/x-shockwave-flash',
        xhtml: 'application/xhtml+xml',
        xht: 'application/xhtml+xml',
        zip: 'application/zip',
        mid: 'audio/midi',
        midi: 'audio/midi',
        mp3: 'audio/mpeg',
        rm: 'audio/x-pn-realaudio',
        rpm: 'audio/x-pn-realaudio-plugin',
        wav: 'audio/x-wav',
        bmp: 'image/bmp',
        gif: 'image/gif',
        jpeg: 'image/jpeg',
        jpg: 'image/jpeg',
        png: 'image/png',
        css: 'text/css',
        html: 'text/html',
        htm: 'text/html',
        txt: 'text/plain',
        xsl: 'text/xml',
        xml: 'text/xml',
        mpeg: 'video/mpeg',
        mpg: 'video/mpeg',
        avi: 'video/x-msvideo',
        movie: 'video/x-sgi-movie'
    };
    
    /**
     * 根据Blob下载文件(Blob即后端的Stream文件类型格式)
     * @params fileName文件名,比如‘2021届学生.xlsx’
     * @params fileBlob文件
     */
    export const downFileBlob = (fileName, fileBlob) => {
        const fileNameGroup = fileName.split('.');
        const fileType = fileNameGroup[fileNameGroup.length - 1].toLowerCase();
        const blob = new Blob([fileBlob], { type: typeDic[fileType] });//处理文档流
        const elink = document.createElement('a');
        elink.download = fileName;
        elink.style.display = 'none';
        elink.href = URL.createObjectURL(blob);
        document.body.appendChild(elink);
        elink.click();
        URL.revokeObjectURL(elink.href); // 释放URL 对象
        document.body.removeChild(elink);
    }
    
    
    /*
    * 下载按钮点击
    */
    const btnClick = async () => {
        const result = await axios({
            url: 'http://localhost:8000/api/v1/excel/template',
            params: { sceneId: 527 },
            responseType: 'blob' // 一定要加,不然下载的文件打开乱码
        });
        // 响应头里的 content-disposition: attachment;filename=2021届学生.xlsx
        const fileName = result.headers['content-disposition'].replace('attachment;filename=', '');
        downFileBlob(fileName, result.data);
    };
  • 相关阅读:
    20102012一年的学习总结
    Excel 强大的数据操纵能力
    如何提高软件可维护性
    软件工程中的图
    软件工程需求规格说明书
    Windows下启动和停止命令的bat文件
    为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】
    crontab
    (转)windows phone7 练习作品(2)
    (转)Windows Phone 资源文件
  • 原文地址:https://www.cnblogs.com/dshvv/p/14810243.html
Copyright © 2011-2022 走看看