请教一个submit提交的问题和文件下载的问题,请大家帮帮忙! submit 下载文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 点击导出按钮,就是调用后台生成,生完了直接下载,这个时间根据数据量不同,时间也不同,不想让用户无限点击导出按钮,所以设置了点击一次之后,置灰,等待后台生成,再将按钮还原。使用submit提交,后台用HttpServletResponse存放生成的文件,返回后,会弹出下载框。但是使用局部提交后,不知道如何让ajax回调函数接收HttpServletResponse的文件,进行下载? 用$.get()或者$.ajax()通过设置请求头中的预期返回数据类型 如果生成完成就直接下载,则直接给前台回一个标识符,标识完成。比如给一个alert框,然后点击alert框后,触发另一个servlet,进行文件下载第一次生成的文件保存在本地磁盘,然后第二次再触发下载方法,专门下载下载完成后,看是否需要删除文件,需要的话再把文件删除了 接上楼:xls的 类型为:application/vnd.ms-excel 局部提交代码:$.post("download.do", function(result) { // 下载 // 回复按钮置灰状态 },"json");之前是form提交,后台走完直接弹出下载框,前台没有进行什么处理。现在是局部提交了,后台走完,不弹下载框了,result是返回值,后台应该如何写才能下载文件? 回调方法里其实就可以接收流,但是出于浏览器安全原因无法处理。有两个解决方案:1、使用jQuery下载插件,这种很多,搜索一下。例如“jquery-file-download” http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/2、Ajax不作发送及接收处理,只负责处理按钮状态,发送和接收工作交一个iframe,当iframe下载完成后会自动关闭,并触发关闭函数,在该函数后面解除按钮状态。 我之前使用form提交,下载没问题,现在就是局部提交,不知道后台应该如何写。 可以尝试用两个servlet,第一个servlet生成文件,第二个servlet去下载文件一个servlet只能给前台一个响应,给result,就不能给下载框;给下载框就不能给result。在回调方法里面再次触发文件下载servlet,直接下载就可以了 HttpServletResponse使用这个应该是把文件放到客户端了,下载后不会在服务器保留吧。具体机制我也不是很清楚。如果想要2次servlet的话,那么就要第一次的时候把文件存放到服务器的物理位置上,返回路径,第二次才能下载吧?现在后台的文件地址:response.setHeader("Content-disposition", "attachment;filename=" + new String((fileName+".xls").getBytes("gbk"),"iso-8859-1"));这应该是放缓存里了吧,直接就返回给客户端了。 接上,fileName不是一个绝对地址,只是文件名 可以将后台文件放在本地磁盘,像前台返回一个响应的result,并带上文件的绝对路径第二次servlet请求的时候,带上文件名和绝对路径,直接下载。response.getOutputStream() 会将输出流输送到浏览器第一个servlet直接生成文件,第二个servlet再下载就可以了 web开发项目题~~ sql标签存储过程 请问关于action的别名和webwork的<ww:form>标签 大家帮我看看这段事务配置为什么没有回滚!? JSP登陆界面出错问题 ,急急急 Microsoft.NET ★★★★★绝对Java问题★★★★★ JSP 字符串拆分问题,请高哥哥们帮忙!(在线等) 菜鸟一个,求指导,代码错误,怎么改? tomcat 启动失败。就大牛解决啊!!! hibernate在没有映射关系的表之间,怎么实现左连接的效果? java 网页编程.html和.js 如何做出输入数据类型不符的提醒
点击导出按钮,就是调用后台生成,生完了直接下载,这个时间根据数据量不同,时间也不同,不想让用户无限点击导出按钮,所以设置了点击一次之后,置灰,等待后台生成,再将按钮还原。使用submit提交,后台用HttpServletResponse存放生成的文件,返回后,会弹出下载框。但是使用局部提交后,不知道如何让ajax回调函数接收HttpServletResponse的文件,进行下载?
比如给一个alert框,然后点击alert框后,触发另一个servlet,进行文件下载
第一次生成的文件保存在本地磁盘,然后第二次再触发下载方法,专门下载
下载完成后,看是否需要删除文件,需要的话再把文件删除了
$.post("download.do",
function(result) {
// 下载
// 回复按钮置灰状态
},"json"
);
之前是form提交,后台走完直接弹出下载框,前台没有进行什么处理。
现在是局部提交了,后台走完,不弹下载框了,result是返回值,后台应该如何写才能下载文件?
1、使用jQuery下载插件,这种很多,搜索一下。例如“jquery-file-download” http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
2、Ajax不作发送及接收处理,只负责处理按钮状态,发送和接收工作交一个iframe,当iframe下载完成后会自动关闭,并触发关闭函数,在该函数后面解除按钮状态。
我之前使用form提交,下载没问题,现在就是局部提交,不知道后台应该如何写。
一个servlet只能给前台一个响应,给result,就不能给下载框;给下载框就不能给result。
在回调方法里面再次触发文件下载servlet,直接下载就可以了
HttpServletResponse使用这个应该是把文件放到客户端了,下载后不会在服务器保留吧。具体机制我也不是很清楚。
如果想要2次servlet的话,那么就要第一次的时候把文件存放到服务器的物理位置上,返回路径,第二次才能下载吧?
现在后台的文件地址:
response.setHeader("Content-disposition", "attachment;filename=" + new String((fileName+".xls").getBytes("gbk"),"iso-8859-1"));
这应该是放缓存里了吧,直接就返回给客户端了。
第二次servlet请求的时候,带上文件名和绝对路径,直接下载。
response.getOutputStream() 会将输出流输送到浏览器
第一个servlet直接生成文件,第二个servlet再下载就可以了