// 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. 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?

    背景介绍 最近的docker容器经常被kill掉,k8s中该节点的pod也被驱赶. 我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器).该Docker容器中的应用程序将会计算数据 ...

  2. jmeter json提取器提取某个属性的所有值

    json 提取器各字段说明: Variable names:保存的变量名,后面使用${Variable names}引用 JSON Path  expressions:调试通过的json path表达 ...

  3. gitlab修改代码提交后显示中文名称

    公司要求提交的代码能显示出是哪位提交的,所以要求显示中文名称以便统计工作 修改方法: 打开CMD命令提示符输入页面,输入修改指令: git config --global user.name &quo ...

  4. Hive详解(06) - Hive调优实战

    Hive详解(06) - Hive调优实战 执行计划(Explain) 基本语法 EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query 案例实操 ...

  5. css预处理器scss/sass语法以及使用

    scss scss在css基础语法上面增加了变量 (variables).嵌套 (nested rules).混合 (mixins).导入 (inline imports) 等高级功能,使用scss可 ...

  6. 一个小而美的 C 语言项目

    我最近在学习 C 语言,看的一本书叫做 <C Primer Plus>,这本书对 C 语言的描写.特性介绍.代码示例都介绍的比较详细,是小白入门 C 语言非常不错的一本书,还有一本经典书叫 ...

  7. [硬核] Bootstrap Blazor Table 综合演示例子

    知识点: 1.导入导出 2.分页功能 3.增删改查 4.批量删除 5.批量编辑(审核) 6.列排序与列搜索 7.顶部搜索实现所有列搜索 8.高级搜索实现多条件搜索 9.顶部与刷新与视图列 10.实现文 ...

  8. css边框,盒子模型、浮动、定位

    边框,盒子模型.浮动.定位 一.边框 border-width : 边框宽度 border-style : 边框样式 1.solid 实线 2.none 无边框 3.dotted 点状虚线边框 4.d ...

  9. 通过this引用成员方法-类的构造器

    通过this引用成员方法 this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用"this成员方法"的格式来使用方法引用.首先是简单的函数式接口︰ 下面是一个 ...

  10. vue学习笔记(四)---- 品牌管理案例

    一.导入相关包 <script src="../lib/vue2.6.10.min.js"></script> <script src=". ...