如何在 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);
});
});
当多个文件被拖放到拖放区时,我需要在上传单个文件之前做一次服务器端准备。
理想情况下,上传器会有一个多文件初始化回调,允许我对我的服务器(准备完成的地方)进行 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);
});
});