java 下载模板,后台正常,浏览器没反应问题

先贴上代码:(测试代码)

前端代码:

后台代码:

模板文件放在远程,filePath是我的模板文件路径

通过url方式获取文件正常,之前自己测试先用BufferedOutputStream读出在本地没问题。

现在bufferedOutputStream是获取的response的outputStream对象,断点可以看到,获取的对象其实没有流数据存在,通过读取模板文件流数据,写入response中的outputStream,返回到前端。

这里遇到坑:

前端之前用的是ajax的形式访问的,后台不报错,前端能进success回调,但没有任何反应。

是因为Ajax的返回类型是json、text、html、xml等类型,不是流类型,所以无法实现文件下载。

所以这里灵活选用了window.href的访问接口方式,请求后正常弹出浏览器存储的弹窗。下载成功。

另外注意点:

 response.setHeader("Content-type", "application-download");  // 等于告诉浏览器,这是一个下载操作

out.flush();  //bufferedoutputstream是缓存输出流,这是清缓存写出操作

 

自己踩坑,自己记录!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可能有多种原因导致前端页面在 network 中一直处于 pending 状态并最终显示接口超时。以下是一些可能的原因: 1. 服务器响应慢:服务器处理请求的时间超过了前端的等待时间,导致前端页面持续处于 pending 状态。这可能是由于服务器负载过高、数据库查询缓慢或者其他耗时操作引起的。 2. 网络连接问题:前端与后端之间的网络连接存在问题,导致请求无法成功完成。这可能是由于网络延迟、网络故障、网络拥堵等原因引起的。 3. CORS(跨域资源共享)问题:如果前端页面和后端接口不在同一个域下,可能会出现跨域请求问题。在某些情况下,浏览器会发送一个预检请求(OPTIONS 请求),如果预检请求失败或超时,前端页面可能无法获取到服务器的响应。 4. 代理设置问题:如果前端通过代理访问后端接口,可能会出现代理设置不正确或代理服务器出现故障的情况。 为了确定具体原因,你可以采取以下步骤来进行排查: 1. 检查服务器日志:查看服务器日志,确认是否有任何错误或异常信息。 2. 检查网络连接:使用网络工具(如 ping、traceroute)测试前端与后端之间的网络连接,确认是否存在延迟或故障。 3. 检查跨域设置:确认后端是否正确配置了跨域资源共享(CORS),并确保前端请求符合跨域规则。 4. 测试代理设置:尝试直接访问后端接口,绕过代理,看是否能够获取到正确的响应。 根据具体情况,你可以进一步深入排查问题并采取相应的解决措施。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值