在jQuery Multi文件上传器中完成上传后刷新页面

时间:2013-09-05 12:50:42

标签: php javascript jquery file-upload blueimp

我正在使用带有PHP的jQuery Multifile上传器(https://github.com/blueimp/jQuery-File-Upload

我希望在上传所有文件后刷新上传页面,我使用的是基本加UI,请告诉我是否有任何简单的方法来实现它

4 个答案:

答案 0 :(得分:11)

使用完成和失败事件以及一些计数器。在options documentation中找到了这些事件。

var fileCount = 0, fails = 0, successes = 0;

$('#fileupload').fileupload({
    url: 'server/php/'
}).bind('fileuploaddone', function(e, data) {
  fileCount++;
  successes++;
  console.log('fileuploaddone');
  if (fileCount === data.getNumberOfFiles()) {
    console.log('all done, successes: ' + successes + ', fails: ' + fails);
    // refresh page
    location.reload();
  }
}).bind('fileuploadfail', function(e, data) {
  fileCount++;
  fails++;
  console.log('fileuploadfail');
  if (fileCount === data.getNumberOfFiles()) {
    console.log('all done, successes: ' + successes + ', fails: ' + fails);
    // refresh page
    location.reload();
  }
});

答案 1 :(得分:3)

您可以使用stop事件。它等同于全局ajaxStop事件(但仅限于文件上载请求)。

stop: function(e){
      location.reload();
}

答案 2 :(得分:2)

我使用过这段代码,到目前为止效果还不错。

$('#fileupload').bind('fileuploadstop', function (e) {
  console.log('Uploads finished');        
    location.reload(); // refresh page
    });

答案 3 :(得分:1)

我使用了ryan的代码,但是有一个问题。当fileCount增加时,data.getNumberOfFiles()的值随着文件的上传而减少,所以我的上传脚本在我上传的中间被中断,其中data.getNumberOfFiles()等于fileCount。

以下是我如何调整ryan的剧本,现在它的工作方式就像一个魅力:

var fileCount = 0, fails = 0, successes = 0;
var _totalCountOfFilesToUpload = -1;

$('#fileupload').bind('fileuploaddone', function (e, data) {
    if (_totalCountOfFilesToUpload < 0) {
         _totalCountOfFilesToUpload = data.getNumberOfFiles();
    }
    fileCount++;
    successes++;
    if (fileCount === _totalCountOfFilesToUpload) {
        console.log('all done, successes: ' + successes + ', fails: ' + fails);
        // refresh page
        location.reload();
    }
}).bind('fileuploadfail', function(e, data) {
    fileCount++;
    fails++;
    if (fileCount === _totalCountOfFilesToUpload) {
        console.log('all done, successes: ' + successes + ', fails: ' + fails);
        // refresh page
        //location.reload();
    }
});

我希望这对其他人也有帮助! :)