在Plupload中,我们可以通过设置filters
来限制文件类型(例如,存档文件),如下所示
// Specify what files to browse for
filters : [
{title : "Zip files", extensions : "zip,avi"}
],
我有文件列表(例如 X.A1,Y.A2,Z.A3,... ),其中扩展名的范围可以从 A1 到 AN (其中 N 是一个整数)。
我想要的是过滤所有扩展名为 A 且后跟整数的文件。像
这样的东西filters : [
{title : "Start With A", extensions : "A\\d+"}
],
我尝试使用过滤器
filters : [
{title : "Start With A", extensions : "A1,A2,A3,A4"}
],
但我不知道我们可能有多少扩展。
有没有办法使用正则表达式来过滤所选文件?
答案 0 :(得分:1)
您有两种选择:
您只需要创建一个您想要允许的扩展字符串。一个简单的for循环足以创建这样的字符串。
使用此解决方案,您可以设置正确的允许扩展名。
您允许用户选择任何文件扩展名,但在选择文件后,您可以验证扩展名是否符合您的要求。如果是,则将文件添加到上载队列。如果不这样做,则向用户抛出错误。
选项1:
var extensions = '', i;
for (i = 1; i < 30; i++) {
extensions += 'A' + i + ',';
}
extensions = extensions.slice(0, -1);
var uploader = new plupload.Uploader({
// (....)
filters : {
max_file_size : '10mb',
mime_types: [
{title : "Custom files", extensions: extensions}
]
},
// (....)
选项2:
var uploader = new plupload.Uploader({
// (....)
init: {
FilesAdded: function(up, files) {
// Foreach file
plupload.each(files, function(file) {
// Get the file extension
var fileExtension = file.name.split('.').pop();
// Create the pattern
var pattern = new RegExp("^A\d$");
// If the pattern doesn't match, don't allow the file.
if (!pattern.test(fileExtension)) {
console.log('not added');
return false;
}
console.log('added');
document.getElementById('filelist').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>';
});
},
// (....)