springmvc下载文件弹出框

如果上传的文件放在tomcat里面通过访问路径直接可以下载,如果不是就得用流的方式返回,浏览器才会弹出下载框

项目中使用的框架是SpringMVC+MyBatis
在项目中需要做一个功能。就是一个报表。然后根据报表生成一个csv格式的文件。然后进行压缩。并提供下载功能。
这里写图片描述

该“Excel下载” 功能的业务逻辑是当点击该按钮。则需要把报表页面上显示的数据进行生成一个csv
格式的文件。然后并进行下载

如何生成CSV(详见开发中。。。。。。)
为此。
我实现文件下载功能。

我们的顺序是从前台到后台依次进入。
前台的代码是:这里写图片描述

这里仅仅只是为Ecxel下载 提供一个点击事件而已。
注意:
这里是没有用Ajax一说来进行下载文件的。我在百度里看到人博友说。Ajax没有提供IO流下载文件的功能。所以大部分都是动态的添加一个Form表单。然后用表单进行自动提交[form.submit()]。自动去后台执行相应的代码。

那么我们需要写好我们的js点击事件。
这里写图片描述

逻辑是:
1-先声明一个Form表单
2-把需要带入后台传参数的值 ,进行设置到input标签里的value值内。
3-然后[form.submit()]让form表单自动提交。


接下来是后台事件的处理。

首先
生成一个CSV文件
以及并返回生成后该文件的路径。

String downloadPath = definedTitle(list,request);
 
 
  • 1

下载文件的代码是:

FileDownload(downloadPathfileName,response);
 
 
  • 1

具体方法实现:这里写图片描述

下载是可以下载。但是我觉得 是不是还可以再优化一下?

有想到Demo小例子的没?楼下的可留邮箱。


修订:2017-03-14 19:00

修订原因:
文件下载在
Google浏览器和IE浏览器8以上是可以正常下载。
问题Bug:
但在iE8 中出现下载不了。且前后台不报错。这就让人很伤脑筋了。
引起的原因是:
  在IE8 中。form表单不能隐式提交(单纯的动态声明一个Form【如上】)。一定要显示提交(append到页面中)。
解决方案的思路:
1、在IE8 中。你要把Form表单显示的显示的HTML文件中。
2、然后用JS的form表单自动提交事件
3、使用jquery 移除Form事件。(为什么 要移除。因为你点击的次数越多次。则页面上添加的也就越多。这样在代码的整洁度上来说不可取。)
4、修复完成

代码如下:

前端:
这里写图片描述

前端JS:
这里写图片描述

后端:
无需更改。

效果图:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值