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

How to make an AJAX call before blueimp uploader starts a multi-file upload

当多个文件被拖放到拖放区时,我需要在上传单个文件之前做一次服务器端准备。

理想情况下,上传器会有一个多文件初始化回调,允许我对我的服务器(准备完成的地方)进行 ajax 调用,并仅在以下情况下开始上传单个文件准备调用 returns.

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

目前,我的服务器端 (php) 代码是 运行 为每个上传的文件检查准备是否已经完成,并且 运行s 准备功能如果需要的话。但是由于上传者异步发送多个文件,出现了race-condition,prepartion函数有时会被调用多次

我按照 barmar 的建议并添加了一个按钮来启动上传,从而解决了我的问题。

我在这里找到了具体说明:

我现在将此代码包含在 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();
    });
},

我对 "Start Upload" 按钮的绑定如下所示:

$("#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);
        });
});