// 1.文件流下载文件:
export function axiosPostExport(url, data, fileName, suffix = '.xlsx') {
    url = getUrlIfUseMock(url, { 
        method: 'POST' 
    });
    return axios({
        method: 'post',
        url,data,
        responseType: 'blob'
    }).then(res => { return res.data }).then(res => {
        const content = res
        const fileNamex = fileName + '-' + moment().format('YYYYMMDDHHmmss') + suffix
        const blob = new Blob([content])
        if ('download' in document.createElement('a')) { // 非IE下载
            const elink = document.createElement('a')
            elink.download = fileNamex
            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, fileNamex)
        }
    }).catch(error => console.log(error))
}
// 或者:
let url = `/admin/user/list/all/export?countryCode=310101`;
let xhr = new XMLHttpRequest();
xhr.open("POST", url, true); // 也可以使用POST方式,根据接口
xhr.responseType = "blob"; // 返回类型blob,XMLHttpRequest支持二进制流类型
xhr.onload = function () {
    if (this.status === 200) {
        let blob = this.response; //使用response作为返回,而非responseText
        let reader = new FileReader();
        reader.readAsDataURL(blob); // 转换为base64,可以直接放入a标签href
        reader.onload = function (e) {
            // 转换完成,创建一个a标签用于下载
            let a = document.createElement("a");
            a.download = "原始数据.xls";
            a.href = e.target.result;
            a.click();
        };
    }
};
xhr.send("countryCode=310101");
// 2.一般文件下载:
<button class="layui-btn search" style="margin-left: 50px;" v-if="hash==2"><a href="/admin/user/list/all/export" download="userlist.xls" style="color: #fff;">导出</a></button>
// 3.与2实现效果差不多
var $form = $('<form method="post"></form>');
$form.attr('action', '/admin/user/list/all/export?countryCode=310101');
$form.appendTo($('body'));
$form.submit();
$form.remove();

前端js下载excel的更多相关文章

  1. ajax下载,前端js下载(转)

    前面一直做过下载的功能.就是后台将文件流写入response里面,然后就好了.前台会自动弹出下载提示等. 今天打算做一个ajax下载.想当然的结果死活浏览器没反应.我擦. 然后浏览器调试,发现resp ...

  2. SpringMVC Get请求传集合,前端"异步"下载excel 附SpringMVC 后台接受集合

    最近项目上管理后台需要自己做一部分js部分,之前都是前端来弄...碰到了下载excel,刚开始使用ajax,搞了好久发现不合适..下载不了,网上说ajax返回类型不支持二进制流.. 因此采用 wind ...

  3. JAVA web端JS下载excel文件

    JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...

  4. 前端JS 下载大文件解决方案

    问题场景 点击导出按钮,提交请求,下载excel大文件(超过500M),该文件没有预生成在后端, 直接以文件流的形式返回给前端. 解决方案 在Vue项目中常用的方式是通过axios配置请求,读取后端返 ...

  5. 前端axios下载excel(二进制)

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  6. 前端axios下载excel,并解决axios返回header无法获取所有数据的问题

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  7. 前端JS下载文件总结

    Data URLs Data URLs: 即前缀为data: 协议的URL,其允许内容创建者向文档中嵌入小文件. 例如:可以直接在HTML中的img元素直接使用Data URLs : data:[&l ...

  8. OSS阿里云上传文件 前端js下载url跨域问题

    场景: 1.后端上传文件至阿里云OSS,返回得到一个URL. 2.前端用这个URL下载文件,ajax请求异常:No 'Access-Control-Allow-Origin' header is pr ...

  9. Web前端js下载流文件

    前端下载文件大概有以下种: 1)a标签链接下载 <a href="url">点击链接下载</a> 2)表单form提交下载 var form = $(&qu ...

  10. 前端axios下载excel无法获取header所有字段问题

    后端设置header后,前端无法获取到其他字段,只需要在服务器端header里面设置 Access-Control-Expose-Headers: Content-Disposition

随机推荐

  1. LeetCode HOT 100:组合总和

    题目:39. 组合总和 题目描述: 给你一个没有重复元素的数组,和一个target目标值,返回数组中可以使数字和为目标数target的所有不同组合.什么叫组合?组合就是数组中任意数字组成的集合,不需要 ...

  2. QT中常用控键

    1.TableWidget类 1.1. 表格属性设置 1.1.1设置行列属性 //设置行列均分 tableWidget->horizontalHeader()->setStretchLas ...

  3. DFS深度优先搜索例题分析

    洛谷P1596 Lake Counting S 题面翻译 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方.我们用一个 \(N\times M(1\times N\times 100, 1\leq ...

  4. 大数据 - DWS层 业务实现

    统计主题 需求指标[ADS] 输出方式 计算来源 来源层级 访客[DWS] pv 可视化大屏 page_log 直接可求 dwd UV(DAU) 可视化大屏 需要用 page_log 过滤去重 dwm ...

  5. 【运维笔录】局域网实现HTTPS访问,只需Nginx + mkcert

    1)下载安装mkcert wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1 ...

  6. [python] tensorflow中的argmax()函数argmax()函数

    首先 import tensorflow as tf tf.argmax(tenso,n)函数会返回tensor中参数指定的维度中的最大值的索引或者向量.当tensor为矩阵返回向量,tensor为向 ...

  7. Hadoop详解(03)-Hadoop编译源码-了解

    Hadoop详解(03)-Hadoop编译源码-了解 准备工作 CentOS联网 配置CentOS能连接外网.Linux虚拟机ping www.baidu.com 是畅通的 jar包准备(hadoop ...

  8. LOJ 数列分块入门 9 题解题报告

    LOJ 数列分块入门 9 题解题报告 \(\text{By DaiRuiChen007}\) I. 数列分块入门 1 题目大意 \(\text{Link}\) 维护一个长度为 \(n\) 的序列,支持 ...

  9. Keil 5(C51 与 MDK-ARM)官网下载安装包 [ 图文教程 ]

    前言 本篇我将介绍 Keil C51 和 MDK-ARM 两大集成开发环境的安装包下载方法,帮助大家安全快速的从官网下载安装包. 博主编写了软件安装教程,可以在安装包下载完成后,跳转观看图文教程进行软 ...

  10. 单实例Primary快速搭建Standby RAC参考手册(19.16 ADG)

    环境:Single Instance -> RAC Single Instance: db_name=demo db_unique_name=demo instance_name=demo se ...