如何在blueimp上传器开始多文件上传之前进行AJAX调用

时间:2019-05-20 19:50:01

标签: jquery file upload blueimp

将多个文件拖放到放置区时,我需要一次性完成服务器端的准备工作。

理想情况下,上传者将有一个多文件初始化回调,该回调将使我能够对服务器进行ajax调用(完成准备工作),并仅在准备调用返回时才开始上载单个文件。< / p>

有什么办法可以达到这个目的?

当前,我为每个上传的文件运行的服务器端(php)代码检查是否准备工作已经完成,并在需要时运行准备功能。但是由于上传者异步发送多个文件,因此出现了竞争条件,有时会多次调用prepartion函数。

1 个答案:

答案 0 :(得分:0)

我遵循了barmar的建议并添加了一个按钮来开始上传,从而解决了我的问题。

我在这里找到了具体说明:https://stackoverflow.com/a/38236305/671669

我现在在blueimp jQuery-File-Upload插件的初始化中包含以下代码:

add: function (e, data) {
    // enable the upload button
    $("#fileupload-start-button").prop('disabled', false);

    // wait for button click to process
    $("#fileupload-start-button").on('xyzUploadTrigger', function (e) {
        data.submit();
    });
},

我对“开始上传”按钮的绑定如下所示:

$("#fileupload-start-button").on('click', function (e) {
    $(this).prop('disabled', true)
    e.preventDefault();

    // prepare server-side for upload of resources
    axios.post('/resources/initResourceCollectionForUploader',
        {
            'params': params,
        })
        .then(function (response) {
            // hide the upload button and trigger it
            $("#fileupload-controls-container").addClass('d-none');
            $("#fileupload-start-button").trigger('xyzUploadTrigger');
        })
        .catch(function (error) {
            console.log(error);
        });
});