过滤器强行转换返回信息导致的excel文件下载为空的问题

在为现有的spring框架中的一个controller增加一个导出excel的功能时,发现了一个问题。无论如何在接口中将文件写入流中,网页下载的excel文件始终是空文档,只包含一行默认的返回json。

debug发现,框架中使用一个过滤器处理网络请求和返回。这个过滤器会在主应用处理完当前网络请求之后,强行将返回值转成字符串,并且按照json形式返回。这就导致在流中写入excel文件后,即使关闭、刷新流,过滤器也是当作空返回值,然后清空流,向流中写入默认的返回json值。这样即使下载到了文档,也只是包含一行默认的返回json。

因此需要特殊判断来规避这个逻辑。利用请求路径的后缀、返回代码等各种手段,同时将excel文件的相关属性、携带信息等赋值在返回信息中,在过滤器里拦截该请求。当逻辑发现这个请求是下载excel文件时,直接调用相关excel工具类,利用返回信息中的信息重新组装文件,并写入流中,避免原先向流中写入默认的返回json值的逻辑。

于是这个问题就这么解决了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值