我正在尝试限制可以通过 plupload 上传的文件扩展名。
因为过滤器不能与 HTML5 运行时一起正常工作,所以我不能使用它们。因此我将以下代码绑定到FilesAdded
事件
var extensionArray = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'];
uploader.bind('FilesAdded', function (up, files) {
var invalid = 0;
for (var i in files) {
var extension = files[i].name
.substr((files[i].name.lastIndexOf('.') + 1))
.toLowerCase();
if (extension == '' || -1 === $.inArray(extension, extensionArray)) {
uploader.splice(i, 1); //also tried uploader.removeFile(files[i])
invalid++;
continue;
}
//dom manipulation to add file occurs here
}
});
但是,虽然这停止了对任何无效文件的 dom 操作,但它似乎并没有真正从队列中删除该项目,因为当我启动上传时,它们都被发送了!
HTML5 和 Flash 运行时都会发生这种情况。我还没有测试过其他的。
绑定到FilesRemoved
事件,它永远不会被触发!但是在它输出到控制台console.log('Invalid files detected');
之前插入uploader.splice(...
,所以该行被调用。