Valums Ajax Uploader(Mutli) - 检测所有文件的上传时间

Dut*_*432 12 jquery events ajax-upload

我正在使用Valums Ajax Uploader上传一批文件.我们最近更改了单上传多重上传类型的代码.这引发了我们的代码问题.

如您所见,当onComplete事件触发时,我们重新加载页面以显示新上传的图像.但是,onComplete事件似乎在EACH文件完成后触发,而不是在整个批处理完成后触发.这现在导致了一个问题,因为当第一个文件完成时,页面重新加载尝试被触发,上传者弹出一个警告"如果你离开这个页面,那么你的剩余上传内容将会破坏" - 或者是这样的.

我注意到onComplete事件发回了一个基于0的已完成文件的ID,但我不确定如何使用它来确定批处理何时完成.

我想我的问题是A)是否有一个不同的事件在所有文件完成时触发或B)如何确定用户选择了多少文件,以便跟踪onComplete事件已完成的文件数量?

    var uploader = new qq.FileUploader({
        multiple: true,
        element: document.getElementById('file-uploader'),
        action: '/projectPhotoUpload.php',
        allowedExtensions: ['jpg', 'png', 'gif'],
        debug: true,
        params: {id: i},
        onComplete: function(id, fileName, responseJSON){
            window.location = 'projects.php?all=true&tab=1&sel=' + currProject;                                 
        }   
    })  
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 22

您可以添加一个计数器,该计数器在上载启动时递增,在完成时递减.仅当计数器为0时才重定向完成.

var running = 0;  
var uploader = new qq.FileUploader({
    multiple: true,
    element: document.getElementById('file-uploader'),
    action: '/projectPhotoUpload.php',
    allowedExtensions: ['jpg', 'png', 'gif'],
    debug: true,
    params: {id: i},
    onSubmit: function(id, fileName){
        running++;                                 
    },
    onComplete: function(id, fileName, responseJSON){
        running--;
        if(running==0){
          window.location = 'projects.php?all=true&tab=1&sel=' + currProject;                                 
        }
    }   
}) 
Run Code Online (Sandbox Code Playgroud)

  • 完善!正是我在寻找什么. (2认同)