2016-05-25 14 views
2

In Plupload wir die Dateitypen einschränken können (beispielsweise Archivdatei), indem die filters Einstellung wie untenFilter-Dateien, wenn ihre Erweiterung entspricht einem RegexMuster

gezeigt
// Specify what files to browse for 
filters : [ 
     {title : "Zip files", extensions : "zip,avi"} 
    ], 

Ich habe Liste der Dateien (zB X.A1, Y.A2, Z.A3, ...), wobei die Erweiterung von A1 bis AN reichen kann (wobei N eine ganze Zahl ist).

Was ich möchte ist, alle Dateien zu filtern, die eine Erweiterung haben, die mit einer A beginnt, gefolgt von einer Ganzzahl. So etwas wie

filters : [ 
      {title : "Start With A", extensions : "A\\d+"} 
     ], 

cound Ich versuche, einen Filter als solche

filters : [ 
      {title : "Start With A", extensions : "A1,A2,A3,A4"} 
     ], 

aber ich weiß nicht, zu verwenden, wie viele Erweiterungen wir haben könnten.

Gibt es eine Möglichkeit, reguläre Ausdrücke zu verwenden, um die ausgewählten Dateien zu filtern?

Antwort

1

Sie haben zwei Möglichkeiten:

  1. Sie müssen nur eine Reihe von Erweiterungen erstellen Sie zulassen möchten. Eine einfache for-Schleife reicht aus, um eine solche Zeichenfolge zu erstellen.

    Mit dieser Lösung legen Sie die korrekten zulässigen Erweiterungen fest.

  2. Sie erlauben dem Benutzer, eine beliebige Dateierweiterung auszuwählen, aber nachdem eine Datei ausgewählt wurde, überprüfen Sie, ob die Erweiterung Ihren Anforderungen entspricht. Wenn dies der Fall ist, fügen Sie die Datei zur Upload-Warteschlange hinzu. Wenn dies nicht der Fall ist, werfen Sie einen Fehler an den Benutzer.

Option 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} 
     ] 
    }, 

    // (....) 

Option 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>'; 
      }); 
     }, 

    // (....) 
+0

Kann nicht versuchen option1 wie wir wissen nicht, wie viele Erweiterungen werden there.As für option2 sein, die wir getan haben, Diese Validierung, aber Suche nach Filter-Datei, wenn der Datei-Browser angezeigt wird. Das konnten wir im Chrome-Browser tun, aber nicht in IE und FF. – RameshPasa