所以我正在使用PLUpload来上传文件。但是,我遇到了一个问题。我正在尝试在队列完成时触发事件。我很亲密,但并不完全。见这里:
$(function() {
var files_remaining = 0;
// Setup flash version
$("#flash_uploader").pluploadQueue({
// General settings
runtimes : 'flash',
url : 'blah.php',
max_file_size : '200mb',
chunk_size : '1mb',
// Flash settings
flash_swf_url : 'plupload.flash.swf'
});
var uploader = $("#flash_uploader").pluploadQueue();
uploader.bind('FilesAdded', function(up, file, res)
{
files_remaining++;
});
uploader.bind('FileUploaded', function(up, file, res)
{
files_remaining--;
if (files_remaining == 0)
{
alert('Complete!');
}
});
});
注意最后两个.bind()
用途。基本上,我正在尝试更新变量以确定已上载了多少文件,然后在队列完成时找出(基于此)。但是,您可能知道,FilesAdded不是基于每个文件运行,而是在将任意数量的文件添加到队列时运行。如果添加了三个文件,则只会调用一次FilesAdded。这意味着只有在一次上传一个文件时,此尝试才有效。
所以,我的问题是:获得队列中剩余文件数量的最佳方法是什么,或者最终(甚至更好)每次队列完成时调用一个事件?我知道很多人都有这个问题,但我没有找到一个解决方案,我已经能够开始工作了!
谢谢!
答案 0 :(得分:1)
$(function() {
var files_remaining = 0;
// Setup flash version
$("#flash_uploader").pluploadQueue({
// General settings
runtimes : 'flash',
url : 'blah.php',
max_file_size : '200mb',
chunk_size : '1mb',
// Flash settings
flash_swf_url : 'plupload.flash.swf'
});
var uploader = $("#flash_uploader").pluploadQueue();
uploader.bind('QueueChanged', function(up, files)
{
files_remaining = uploader.files.length;
});
uploader.bind('FileUploaded', function(up, file, res)
{
files_remaining--;
if (files_remaining == 0)
{
alert('Complete!');
}
});
});
答案 1 :(得分:1)
在FileUploaded事件中检查 up.total.queued
uploader.bind('FileUploaded', function(up, file, res)
{
if (up.total.queued == 0)
{
alert('Complete!');
}
});