【发布时间】:2012-11-05 14:10:25
【问题描述】:
我正在尝试限制可以通过 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 事件,它永远不会被触发!但是在 uploader.splice(... 之前插入 console.log('Invalid files detected'); 它会输出到控制台,因此会调用该行。
【问题讨论】:
标签: javascript ajax file-upload plupload