Aufbauend auf den vorangegangenen Antworten zur Verwendung des accept-Attributs, können Sie dies mit der Methode Datei-API . Dies ermöglicht Ihnen auch den Zugriff auf den Inhalt der Datei, wenn Sie FileReader um eine lokale Analyse oder Datenverarbeitung durchzuführen.
Erstellen Sie zunächst ein Eingabeelement. Hier könnten Sie den Dateityp auf das Attribut accept anwenden, aber für das Beispiel werden Sie alle Dateitypen auswählen können.
<input type="file" name="upload" accept="*" multiple>
Als Nächstes müssen wir auf das "Change"-Ereignis des Eingabeelements hören.
var upload = document.querySelector('input[type="file"]');
upload.addEventListener('change', function() {});
Innerhalb der Funktion können Sie auf das Dateiobjekt der Eingabe zugreifen.
var files = this.files
Wir können nicht einfach über das Objekt iterieren, da es sich nicht um ein Array handelt, aber wir können die Funktion item() verwenden, um auf unser Dateiobjekt in der Liste zuzugreifen.
for (var i = 0; i < files.length; i++) {
var file = files.item(i);
}
Jetzt, wo wir unser File-Objekt haben, können wir auf seine Eigenschaften name und type zugreifen und hier unsere Dateiprüfung durchführen. In diesem Fall prüfe ich, ob es sich um eine .txt-Datei handelt und gebe eine Meldung aus, wenn dies nicht der Fall ist. Sie können den Namen anhand eines Regex-Musters für den Dateityp oder den Typ anhand des MIME-Typs überprüfen.
if (!file.name.match(/.txt$/i) || file.type != 'text/plain') {
console.log(file.name + ' is not a .txt file.');
}
var upload = document.querySelector('input[type="file"]');
upload.addEventListener('change', function() {
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files.item(i);
if (!file.name.match(/.txt$/i) || file.type != 'text/plain') {
console.log(file.name + ' is not a .txt file.');
}
}
});
<input type="file" name="upload" accept="*" multiple>
Die Datei-API wird von modernen Browsern sehr gut unterstützt. Durch die Kombination mit dem accept-Attribut können Sie leicht filtern, was der lokale Benutzer bei einem Upload auswählen kann, und nützliches Feedback geben. Wenn Sie die Datei hochladen, sollten Sie dennoch den Dateityp in Ihrem Backend überprüfen und validieren.
3 Stimmen
Es ist leicht möglich mit PHP, aber ich weiß nicht, ob Sie das verwenden können, also werde ich den Code nicht posten.
4 Stimmen
Das kann ich, aber ich habe eine Lösung, die mit JavaScript arbeitet - damit entfällt das lästige Hochladen einer Datei entonces die Fehlermeldung "Falsche Datei" erhalten.
0 Stimmen
Siehe auch die neuere Frage: stackoverflow.com/questions/181214/
2 Stimmen
Eine Sache, die zu beachten ist, ist, dass, während es nicht großartig für die Validierung ist, accept die sichtbaren Dateien auf die akzeptierten beschränkt, während der Benutzer sie durchsucht (zumindest in einigen Browsern ...). Es handelt sich also eher um eine ergonomische Funktion für die Benutzeroberfläche als um eine Validierungsfunktion.