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(...
と、その行が呼び出されます。