Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用struts2和Ajax下载文件时放置进度条_Java_Jquery_Ajax_Struts2_Progress Bar - Fatal编程技术网

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

Java 如何在使用struts2和Ajax下载文件时放置进度条,java,jquery,ajax,struts2,progress-bar,Java,Jquery,Ajax,Struts2,Progress Bar,我不能把进度条,因为它是直接重定向页面和文件下载 一个问题中有这么多问题(大部分是隐含的) 如何在使用struts2和Ajax下载文件时放置进度条 如果不需要,请不要使用AJAX下载。在浏览器中打开文件时(contentDisposition:inline),只需使用新选项卡(/Window)。下载文件(contentDisposition:attachment)时,当前页面不会受到影响。您可以在中找到几种方法,例如: 价值1 下载 我们如何才能把浏览器的进度条 每个浏览器都有一个内置的进度

我不能把进度条,因为它是直接重定向页面和文件下载

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

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

  • 如果不需要,请不要使用AJAX下载。在浏览器中打开文件时(
    contentDisposition:inline
    ),只需使用新选项卡(/Window)。下载文件(
    contentDisposition:attachment
    )时,当前页面不会受到影响。您可以在中找到几种方法,例如:

    
    价值1
    下载
    

  • 我们如何才能把浏览器的进度条

  • 每个浏览器都有一个内置的进度条,下载文件时会显示该进度条:

    只有在未提供要下载的文件长度的情况下,浏览器才能绘制进度条。要指示浏览器,您可以使用
    contentLength
    标题,该标题也可直接在结果中使用:

    
    图像/jpeg
    附件filename=“document.pdf”
    ${lengthOfMyFile}
    
    private long lengthOfMyFile;//带吸气剂
    公共字符串execute(){
    /*文件加载和东西*/
    lengthOfMyFile=myFile.length();
    回归成功;
    }
    
  • 假设文件太重。所以这需要时间,所以我想防止用户不点击其他按钮

  • 如果要节省带宽,则需要使用Web服务器配置。本文可能有助于:

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

    // The Action must implement the SessionAware interface
    
    private Map<String,Object> session; // with Setter
    private final static String BUSY = "I'm busy. Try again";
    
    public String execute(){
        if (session.get(BUSY)!=null){
           LOG.debug("Another download is in progress. I stop here");
           return NONE;
        }
        try {
            session.put(BUSY,BUSY);
            /* file loading and stuff ... */
        } finally {
            session.remove(BUSY);
            return SUCCESS;
        }
    }
    
    //该操作必须实现SessionAware接口
    专用映射会话;//和二传手
    private final static String BUSY=“我很忙,再试一次”;
    公共字符串execute(){
    if(session.get(BUSY)!=null){
    debug(“另一个下载正在进行中,我在这里停止”);
    不返回任何值;
    }
    试一试{
    session.put(忙,忙);
    /*文件加载和东西*/
    }最后{
    会话。删除(忙);
    回归成功;
    }
    }
    
    好的旧信号灯


  • 进度监视器放在哪里?为什么要通过AJAX下载?您确定浏览器进度条不够吗?如何放置浏览器进度条?我可以下载csv、txt、xml、html、pdf等不同格式的文件。假设文件太重。所以这需要时间,所以我想防止用户不点击其他按钮。另一方面,这需要第二次请求。请帮助我