下载最近修改的文件

时间:2012-09-05 12:16:08

标签: jquery ajax servlets download

下面的代码执行此操作:   执行struts动作,修改服务器中的文件,然后下载文件   该文件已下载但不是该文件的最新版本

$("#generateButton").live("click",function(){
    $.ajax({
        type: "POST",
        url: "../generateBlame.do",
        data: { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" }
    });

    $.fileDownload('http://localhost:8080/gestionRH/fiches/decision de blame.doc');
});

获取更新文件的任何方式?

3 个答案:

答案 0 :(得分:3)

更新完成后开始下载操作(在success回调ajax请求时)

$("#generateButton").live("click",function(){
    $.ajax({
       type    : "POST",
       url     : "../generateBlame.do",
       data    : { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" },
       success : function() {
           $.fileDownload('http://localhost:8080/.../decision de blame.doc');
       }

    });

});

答案 1 :(得分:2)

假设generateBlame.do请求是在指定路径上创建文件的内容,您需要将$.fileDownload方法调用放在请求的success处理程序中 - 因为请求是异步制作。

试试这个:

$("#generateButton").live("click",function(){
    $.ajax({
        type: "POST",
        url: "../generateBlame.do",
        data: { fileName: "blame", nbrParam: "2",param1 :"aaa",param2:"bbb" },
        success: function() {
            $.fileDownload('http://localhost:8080/gestionRH/fiches/decision de blame.doc');
        },
        error(xhr, status, error) {
            alert("File generation failed - " + error);
        }
    });
});

答案 2 :(得分:0)

可能问题是由于服务器需要一些时间来刷新其资源;所以为了解决这个问题,我强迫一段时间后触发下载事件 这是代码

function timeout_trigger() {
  $.fileDownload('path_to_file');   
    $('#loading').hide();
    $('#generateButton').button({ disabled: false });
}


 $("#generateButton").live("click",function(){
 $('#generateButton').button({ disabled: true });
    $('#loading').show();
    $.post(
       '../generateBlame.do',
       { fileName: "blame", nbrParam: "2",param1 :"pop",param2:"lll" },
      function(data) {
      setTimeout('timeout_trigger()',5000);             
});
});

这是有效的,但我更喜欢以更聪明的方式做到这一点 有什么建议 ? 有一个更新服务器的方法吗?