先贴上代码:(测试代码)
前端代码:
后台代码:
模板文件放在远程,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是缓存输出流,这是清缓存写出操作
自己踩坑,自己记录!