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();
        }
    }
}
AI 代码解读

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;
    });
AI 代码解读

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

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

目录
打赏
0
0
0
0
8
分享
相关文章
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
277 3
|
3月前
|
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
216 5
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
261 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
98 11
|
3月前
|
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
117 6
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
201 3
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
233 8
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
http 的 get 和 post 区别 1000字
【10月更文挑战第27天】GET和POST方法各有特点,在实际应用中需要根据具体的业务需求和场景选择合适的请求方法,以确保数据的安全传输和正确处理。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等