How to put progress bar when downloading file using struts2 and Ajax(使用struts2和Ajax下载文件时如何放置进度条)
本文介绍了使用struts2和Ajax下载文件时如何放置进度条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法放置进度条,因为它直接重定向页面并下载文件.
解决方案
这么多问题(大部分是隐含的)一个问题!
<块引用>使用struts2和Ajax下载文件时如何放置进度条
如果不需要,不要使用 AJAX 下载.当您在浏览器中打开文件 (
contentDisposition: inline
) 时,只需使用新的 Tab(/Window).当您下载文件(contentDisposition: attachment
)时,当前页面不会受到影响.您可以在 结果:<result name="success" type="stream"><param name="contentType">image/jpeg</param><param name="contentDisposition">附件;filename="document.pdf"</param><param name="contentLength">${lengthOfMyFile}</param></结果>
private long lengthOfMyFile;//使用 Getter公共字符串执行(){/* 文件加载和其他东西 ... */lengthOfMyFile = myFile.length();返回成功;}
<块引用>
假设文件太重.所以这需要时间,所以我想防止用户不点击其他按钮
如果您想节省带宽,那么您需要进行 Web 服务器 配置.这篇文章可能会有所帮助:
- 限制数量每个客户端的下载量
如果您不关心防止泛滥的请求,而只是防止客户端的多个并发下载,您可以使用会话变量,放在开头并在结尾删除方法,在下载操作开始时检查它是否存在.如果它存在,您将不会下载,否则,您将:
//Action 必须实现 SessionAware 接口私有地图<字符串,对象>会议;//使用 Setterprivate final static String BUSY = "我很忙.再试一次";公共字符串执行(){if (session.get(BUSY)!=null){LOG.debug("另一个下载正在进行中.我停在这里");返回无;}尝试 {session.put(忙,忙);/* 文件加载和其他东西 ... *
沃梦达教程
本文标题为:使用struts2和Ajax下载文件时如何放置进度条


猜你喜欢
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01