使用struts2和Ajax下载文件时如何放置进度条

How to put progress bar when downloading file using struts2 and Ajax(使用struts2和Ajax下载文件时如何放置进度条)

本文介绍了使用struts2和Ajax下载文件时如何放置进度条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法放置进度条,因为它直接重定向页面并下载文件.

解决方案

这么多问题(大部分是隐含的)一个问题!

<块引用>

使用struts2和Ajax下载文件时如何放置进度条

  1. 如果不需要,不要使用 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();返回成功;}

<块引用>

假设文件太重.所以这需要时间,所以我想防止用户不点击其他按钮

  1. 如果您想节省带宽,那么您需要进行 Web 服务器 配置.这篇文章可能会有所帮助:

    • 限制数量每个客户端的下载量

    如果您不关心防止泛滥的请求,而只是防止客户端的多个并发下载,您可以使用会话变量,放在开头并在结尾删除方法,在下载操作开始时检查它是否存在.如果它存在,您将不会下载,否则,您将:

    //Action 必须实现 SessionAware 接口私有地图<字符串,对象>会议;//使用 Setterprivate final static String BUSY = "我很忙.再试一次";公共字符串执行(){if (session.get(BUSY)!=null){LOG.debug("另一个下载正在进行中.我停在这里");返回无;}尝试 {session.put(忙,忙);/* 文件加载和其他东西 ... *

本文标题为:使用struts2和Ajax下载文件时如何放置进度条

基础教程推荐