Java http Post下载Excel文件 xxx.xlsx 失败解决,及传输文件类型ContentType对应关系

简介: 查询数据库生成Excel下载功能。本来很简单的功能却搞了挺久的,主要因为下载的文件打不开,且此功能已是基本功能。这里记录下来方便后面查阅。ContentType对应的文件关系查看下面连接https://www.runoob.com/http/mime-types.html

1、后端代码spring cloud项目

@RequestMapping("/printexcel")
@ResponseBody
public void printSaleInvoiceToExcel( HttpServletResponse response) throws ParseException {
    // 查询数据,生成Excel返回byte数组
    byte[] databyte = saleInvoiceCustomsExcelService.saleInvoiceExportExcel(new Context());
    OutputStream out = null;
    try {
                  //重点:要写对类型,要不然下载文件打不开
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        out = response.getOutputStream();
        out.write(databyte);
    } catch (Exception e) {
        e.printStackTrace();
    }finally {
        try {
            if(out!=null) out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2、nuxt vue前端写法,后面有时间再优化改进
var _this = this;

  var query = _this.query;
  _this.loadingFlag = true;
  _this.$axios.post("/printexcel", { query: query }, { responseType: "arraybuffer" }).then((result) => {
      var blob = new Blob([result], {
        type: "application/vnd.ms-excel;charset=utf-8"
      });
      var downloadElement = document.createElement("a");
      var href = window.URL.createObjectURL(blob); //创建下载的链接
      downloadElement.style.display = "none";
      downloadElement.href = href;
      downloadElement.download = "allProcurementPlanInfo.xlsx"; //下载后文件名
      document.body.appendChild(downloadElement);
      downloadElement.click(); //点击下载
      document.body.removeChild(downloadElement); //下载完成移除元素
      window.URL.revokeObjectURL(href); //释放掉blob对象
      _this.loadingFlag = false;
    }).catch(() => {
      this.$message({
        type: 'info',
        message: 'download canceled'  
      });
      _this.loadingFlag = false;
    });

3、对照部分截图
详情看下面的连接,暂时没有时间去找官网
https://www.runoob.com/http/mime-types.html
image.png

参考文章:https://blog.csdn.net/qweasdassd/article/details/122553718

相关文章
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
28 2
|
8天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
38 3
|
11天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
29 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
19天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
19天前
|
缓存 安全 API
http 的 get 和 post 区别 1000字
【10月更文挑战第27天】GET和POST方法各有特点,在实际应用中需要根据具体的业务需求和场景选择合适的请求方法,以确保数据的安全传输和正确处理。
|
22天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
29 4
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
24天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
26天前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式

热门文章

最新文章

下一篇
无影云桌面