这是一个功能失败。我围绕 jQuery API 做了一个包装器,这就是我所做的让它为我工作。我的代码执行一些其他业务逻辑,但它应该足以让您启动。
基本上,绑定到FilesAdded
事件和呼叫removeFile
在上传者对象上(如果文件太多)。我想我添加了 50 毫秒超时,因为它给我带来了文件尚不存在的问题。
uploader.bind('FilesAdded', function (up, files) {
var i = up.files.length,
maxCountError = false;
plupload.each(files, function (file) {
if(uploader.settings.max_file_count && i >= uploader.settings.max_file_count){
maxCountError = true;
setTimeout(function(){ up.removeFile(file); }, 50);
}else{
// Code to add pending file details, if you want
}
i++;
});
if(maxCountError){
// Too many files uploaded, do something
}
});
max_file_count
是我在创建 pluploader 实例时添加的内容。
Edit:实际上我必须为此采取两种不同的方法。上面的代码只允许一个人上传一定数量的文件(否则会生成错误)。
此代码片段的工作方式类似 - 但会删除现有文件并仅上传最新的文件:
uploader.bind('FilesAdded', function (up, files) {
var fileCount = up.files.length,
i = 0,
ids = $.map(up.files, function (item) { return item.id; });
for (i = 0; i < fileCount; i++) {
uploader.removeFile(uploader.getFile(ids[i]));
}
// Do something with file details
});