[Javascript] Ajax请求Spring中导出poi生成的Excel问题

4 篇文章 0 订阅
2 篇文章 0 订阅

[Javascript] Ajax请求Spring中导出poi生成的Excel问题

关键字
poi
excel
ajax
get
ResponseEntity

背景信息/现象/问题

在这里插入图片描述
通过poi生成excel,在controller层返回
ResponseEntity<byte[]>
类型的二进制文件,但是ajax不能获取,因为ajax接受的是字符串.

根本原因

因为导出excel,实际上是文件下载,后台需要往前端(浏览器)写文件流的。而Ajax请求获取数据都是“字符串”,整个交互传输用的都是字符串数据,它没法解析后台返回的文件流,但浏览器可以

也就是说ajax通过我背景信息中的方法从更上是不能导出excel的

解决方法

  1. poi生成excel文件到服务器某个具体文件夹,将地址给到ajax的result结果中,让用户自行点击下载,也就是用get方法下载,而不是用ajax方法
  2. 直接通过get请求访问

    新的问题

    因为这个项目采用了JWT + SpringSecurity的鉴权方法,每次通过ajax访问时是在header中加了鉴权信息的,而百度后发现get请求是不能添加header信息的,所以用get请求访问过去会被SpringSecurity拦截,我的临时解决方案是:

    对应解决方法

    1. SpringSecurity对某一个地址不进行鉴权,可以直接访问
    2. 在get请求中将鉴权信息通过参数的方式传到controller层
    3. controller收到请求,不使用默认的方法(从header里)解析出来用户信息,而是新写了个从参数中读鉴权信息再鉴权

参考:

https://www.cnblogs.com/skytoangel/p/11276233.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值