jQuery文件上传插件:当所有文件都上传时触发一个事件
jQuery File Upload Plugin: trigger an event when all files are uploaded
我使用jQuery文件上传插件(http://blueimp.github.io/jQuery-File-Upload/)管理我的文件上传。它运行得很好。
我可以检测每个单独的文件何时上传,并(例如)显示一条消息。
但我想检测每个文件何时上传以显示最终消息
怎么做这样的事?
以下是我的实际实现:
$('#fileupload').fileupload({
url: "api/fileManager",
dataType: 'json',
maxFileSize: 100000000, // 100 MB for testing!
dropZone: $(document.body)
}).on('fileuploadchange', function (e, data) {
// nothing here
}).on('fileuploaddrop', function (e, data) {
// nothing here
}).on('fileuploadsend', function (e, data) {
// displaying the loading & progress bar
$('#loading').show().html('<small><b>' + rscTransport.loading + '</b></small>');
$('#progress').show();
}).on('fileuploaddone', function (e, data) {
// here this is called for each individual file
if (typeof data.result != 'undefined') {
ctxTransport.getDocumentsByType(data.result.typeId, documents);
log('Fichier chargé avec succès.', '', true);
} else {
logError('Pas de réponse du serveur.');
}
}).on('fileuploadfail', function (e, data) {
alert('Error: ' + data.jqXHR.statusText + ' : ' + data.jqXHR.responseText);
$('#loading').empty().hide();
$('#progress').hide();
$('#progress .bar').css('width', '0%');
}).on('fileuploadprocessalways', function (e, data) {
// nothing here
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#loading').html('<small><b>' + rscTransport.loading + progress + '% </b></small>');
$('#progress .bar').css('width', progress + '%');
if (data.loaded == data.total) {
$('#loading').empty().hide();
$('#progress').hide();
$('#progress .bar').css('width', '0%');
}
});
建议您使用停止回调:
https://github.com/blueimp/jQuery-File-Upload/wiki/Options#stop
另一种方法是使用插件API在fileuploaddone回调中检索活动上传的数量:
var activeUploads=$('#fileupload').fileupload('active');
当所有文件都上传到服务器上时,activeUploads==1。然后你可以这样使用它:
var $fileInput = $('#fileupload');
$fileInput.on('fileuploaddone', function(e, data) {
var activeUploads = $fileInput.fileupload('active');
if(activeUploads == 1) {
console.info("All uploads done");
// Your stuff here
}
}
看看这里:活动上传的数量JQuery文件上传。
希望它能有所帮助!
作为插件选项和回调的替代方案,我用纯jQuery解决了同样的问题。在一个调用"上传所有"按钮的javascript函数中,我有以下几行:
$(document).ajaxStop(function(){
alert('All uploads done');
$(this).unbind("ajaxStop");
});
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Sails.js:同时发布文本输入和一个文件
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 要求定义另一个文件中的对象
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- SuiteScript2.0-包括一个自定义文件
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何用javascript发送多个文件没有jQuery我想要每个文件一个进度条
- 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用.我该怎么做
- Jquery结构-每个文件一个函数
- 如何将文件一个接一个地上传到谷歌驱动器使用谷歌应用程序脚本
- 将多个链接从txt文件一个接一个地插入到一个iframe中