【问题标题】:jQuery FileUpload callback for complete process donejQuery FileUpload 回调完成整个过程
【发布时间】:2015-12-08 12:53:20
【问题描述】:

我正在使用Blueimp Jquery File Upload plugin 上传文件。我想在完整的上传过程完成后做一些事情。因此,例如,如果我(一次)拖放 4 个文件,我想在上传所有文件时调用一些代码。我该怎么做?

我尝试过很多回调,例如donestopprogressall 等,但似乎没有什么是我想要的。在运行我的代码之前,我需要确保最后一个 done 已被调用。

我与stop 最接近,但有时它似乎在done 之前运行。有什么想法吗?

【问题讨论】:

    标签: javascript jquery jquery-file-upload blueimp


    【解决方案1】:

    更新 - 我在 cmets 中了解到,触发的回调时间与要上传的文件数量相同。所以正确的答案是使用回调“always”并放置一个计数器。每次上传文件时计数都会增加。

    // Variables to put before the .fileUpload and to be init in "add"
    var nbElementsToUpload = 0;
    var nbElementsUploaded = 0;
    
    
    .bind('fileuploadalways', function (e, data) {
        nbElementsUploaded++;
        if(nbElementsToUpload === nbElementsUploaded){
             /* All elements uploaded */
        }
    })
    

    您正在谈论“最后”完成的事情。你是什​​么意思?您是调用 4 次上传还是一次调用 4 个文件?

    你有一个插件的回调函数列表。 https://github.com/blueimp/jQuery-File-Upload/wiki/Options#callback-options

    如果您想捕获成功上传请求,请使用“完成” https://github.com/blueimp/jQuery-File-Upload/wiki/Options#done

    如果您想在完成后捕获所有个已完成的操作(包括错误和中止),请使用回调“always”。 https://github.com/blueimp/jQuery-File-Upload/wiki/Options#always

    我自己使用这个插件没有“完成”和“失败”的问题。示例:

    }).on('fileuploaddone', function (e, data) { // code here })
      .on('fileuploadfail', function (e, data) { // code here })
    

    您可以添加 console.log 以正确查看发生的情况和顺序。

    问候,

    【讨论】:

    • 一次有 4 个文件就是我的意思。是的,我也找到了那个列表。谢谢。
    • 那么它有效吗? :) 如果是,请接受答案以关闭问题。
    • 正如我在问题中所写的,我已经玩过大多数回调了。 “停止”是迄今为止最好的,如果我添加延迟它可能会成功。我想知道是否有更好的方法...
    • 我每次都上传 1 个文件。所以我不确定为什么 "always" 不是您问题的答案。您的意思是根据您的文件数触发回调 X 次?
    • 没错。 4 文件总是触发(如果没有错误则完成)4 次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多