将多个文件拖放到放置区时,我需要一次性完成服务器端的准备工作。
理想情况下,上传者将有一个多文件初始化回调,该回调将使我能够对服务器进行ajax调用(完成准备工作),并仅在准备调用返回时才开始上载单个文件。< / p>
有什么办法可以达到这个目的?
当前,我为每个上传的文件运行的服务器端(php)代码检查是否准备工作已经完成,并在需要时运行准备功能。但是由于上传者异步发送多个文件,因此出现了竞争条件,有时会多次调用prepartion函数。
答案 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);
});
});