首页 > 其他分享 >使用post接口进行大批量导出文件

使用post接口进行大批量导出文件

时间:2022-12-02 14:58:02浏览次数:67  
标签:大批量 导出 ids url downloadElement post exportFile

在工作中,使用get方法导出文件会遇到一些问题:url长度限制,传入id量大且加载速度慢,所以抛弃以前的请求下载方式,使用post接口进行请求下载!

  本次的导出文件为excel文件,其他文件未尝试!

以前的方法,使用get接口:

import { getToken } from "@/util/auth";

exportFile(){
    let url_str = `/api/exportFile?Blade-Auth=${getToken()}&ids=${
        this.ids
     }`;
    console.log("url_str", url_str);
    this.$downFile(url_str, "财务导出报告.xlsx");
    this.$message({
        type: "success",
        message: "导出成功!",
     });
};

现在的方法,使用post接口:

接口js如下:(必须写上 responseType: "blob" ,否则下载的文件会乱码)

export const exportFile = (ids) => request({
    url: '/api/exportFile',
    method: 'post',
    data: ids,
    responseType: "blob"
})

页面vue代码如下:

import { exportFile } from "@/api/axiosInfo.js";

exportFile(){
    exportFile({ ids: this.ids }).then((res) => {
          // 大批量导出
          var blob = new Blob([res.data], {
            //这个里面的data 的二进制文件 创建一个文件对象
            type: "application/vnd.ms-excel;charset=utf-8",
          });
          var downloadElement = document.createElement("a"); //创建一个a 虚拟标签
          var href = window.URL.createObjectURL(blob); // 创建下载的链接
          downloadElement.href = href;
          downloadElement.download =
            decodeURI(
              res.headers["content-disposition"].split("filename=")[1]
            ) || ""; // 下载后文件名
          document.body.appendChild(downloadElement);
          downloadElement.click(); // 点击下载
          document.body.removeChild(downloadElement); // 下载完成移除元素
          window.URL.revokeObjectURL(href); // 释放掉blob对象
};

 

该方法来源于:

js post 请求接口下载文件 作者:义美-小义

标签:大批量,导出,ids,url,downloadElement,post,exportFile
From: https://www.cnblogs.com/yuanZi666/p/16944465.html

相关文章

  • PLSQL导入/导出数据方法--dmp文件
    转:PLSQL导入/导出数据方法以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息。今天突然懒得去找以前的建表文件,而想用SLSQL直......
  • 初识ajax初次使用get,post传参
    浅了解http和httpsHTTP协议以名文的方式发送内容,不会提供任何方式的数据加密。HTTP协议不适合传输一些敏感信息,比如(信用卡号,密码等支付信息)HTTPS则是具有安全性的ssl加密......
  • extremeTable导出excel小结
    extremeTable是很老牌的东西,最近用了下,发觉还可以,但在导出excel时,要注意如下两点.1)在web.xml中增加过滤器   <filter>         <filter-name>eXtreme......
  • PostgreSQL的常用DDL操作语句
    1.建表、删除表的DDL语句CREATETABLEIFNOTEXISTS"my_table"(idSERIALNOTNULL,namevarchar(255)NOTNULL,agevarchar(255)NOTNULL,drint2DEF......
  • word 97+java+freemarker导出word
    java中,导出word,一般是可以先用word做好模版,然后另存为mht网页文件,然后利用freemaker中做标记,再用java程序填充,但要注意,保存为网页文件后,要改下编......
  • 5分钟搞定 MySQL 到 Greenplum / PostgreSQL 数据迁移同步
    简述本文主要介绍如何使用CloudCanal构建一条MySQL到Greenplum/PostgreSQL的数据同步链路。支持版本源端MySQL支持的版本为:5.6、5.7、8.X对端PostgreSQL支......
  • 界面控件DevExtreme——轻松将TreeList数据导出为PDF格式
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • Javascript 浏览器本地导出文件
    浏览器本地导出文件/***导出文件*@paramdata数据*@paramname文件名*/exportRaw:function(data,name){varurlObject=window.URL||window.web......
  • sql注入(POST盲注)
    红色为payload1.布尔型盲注(select语句盲注)uname=xxxxxx'or(length(database())=8)--+&passwd=xxxxx&submit=Submit2.时间盲注(select语句盲注)uname=xxxxx'or(selectif(l......
  • ajax发送post后台无法获取问题
    作为一名后端小渣渣一名。最近项目中出现了由于get请求携带参数过长而导致无法发出请求的问题,由于才疏学浅只能想到用post请求来解决此问题。get参数长度受限制,post不受......