zoukankan      html  css  js  c++  java
  • vue使用axios实现excel文件下载的实现

    前端vue页面上的导出或者下载功能,一般是调用后端的一个接口,由接口生成excel,word这些文件的流信息,返回给vue,然后由vue去构建下载的动作,这边整理了一下,封装了一下,方便以后复用。

    封装一个download文件

    使用年月日时分秒毫秒做为文件的名称,下载为excel文件

    /**
     * 下载文件
     */
    export const downloadFile = (url,ext, params) => {
        let accessToken = getStore('accessToken');
        return axios({
            method: 'get',
            url: `${base}${url}`,
            params: params,
            headers: {
                'accessToken': accessToken
            },
            responseType: 'blob', //二进制流
        }).then(res => {
            // 处理返回的文件流
            const content = res;
            const blob = new Blob([content], { type: 'application/vnd.ms-excel;charset=utf-8' });
            var date =
                new Date().getFullYear() +
                "" +
                (new Date().getMonth() + 1) +
                "" +
                new Date().getDate() +
                "" +
                new Date().getHours() +
                "" +
                new Date().getMinutes() +
                "" +
                new Date().getSeconds() +
                "" +
                new Date().getMilliseconds();
            const fileName = date + "." + ext;
            if ("download" in document.createElement("a")) {
                // 非IE下载
                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);
            } else {
                // IE10+下载
                navigator.msSaveBlob(blob, fileName);
            }
        });
    };

    为具体功能封装一个组件,方便在前台调用

    
    // 评价导出
    export const getRecordExport= (params) => {
        return downloadFile('/record/export',"xlsx", params)
    }

    秒收目录站https://www.tomove.com.cn

    vue页面上调用它,实现导出

    <script>
    import {
      getReportExport
    } from "@/api/index";
    import util from "@/libs/util.js";
    
    export default {
      name: "task-manage",
     data() {},
     methods: {
       exportExcel() {
          getReportExport(this.searchForm).then(res=>{});
        }
     }
    }
  • 相关阅读:
    JavaMail入门第四篇 接收邮件
    JavaMail入门第三篇 发送邮件
    JavaMail入门第二篇 创建邮件
    JavaMail入门第一篇 邮件简介及API概述
    Java对象数组
    Mybatis Dao层注解及XML组合Dao的开发方式
    spring mvc常用注解总结
    组建自己的局域网(可以将PC机实现为服务器)
    局域网 FTP建立,搭建一个简易的局域网服务器
    公司局域网搭建
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13704793.html
Copyright © 2011-2022 走看看