Sie haben tatsächlich keinen Zugriff auf das Dateisystem (z. B. Lesen und Schreiben lokaler Dateien). Aufgrund der HTML5-Datei-API-Spezifikation gibt es jedoch einige Dateieigenschaften, auf die Sie Zugriff haben, und die Dateigröße ist eine davon.
Für den HTML unten
<input type="file" id="myFile" />
Versuche Folgendes:
//binds to onchange event of your input field
$('#myFile').bind('change', function() {
//this.files[0].size gets the size of your file.
alert(this.files[0].size);
});
Da es Teil der HTML5-Spezifikation ist, funktioniert es nur für moderne Browser (v10 für IE erforderlich). Ich habe hier weitere Details und Links zu anderen Dateiinformationen hinzugefügt , die Sie kennen sollten: http://felipe.sabino.me/javascript / 2012/01/30 / javascipt-checking-the-file-size /
Unterstützung für alte Browser
Beachten Sie, dass alte Browser einen null
Wert für den vorherigen this.files
Aufruf zurückgeben. Wenn this.files[0]
Sie also auf den Zugriff zugreifen, wird eine Ausnahme ausgelöst , und Sie sollten vor der Verwendung prüfen, ob die Datei-API unterstützt wird
jQuery
Javascript-Datei nicht hinzugefügt wurde (oder nicht richtig geladen wurde). Haben Sie es aufhead
Ihrer Seite hinzugefügt ?Wenn Sie jQuery's verwenden möchten,
validate
können Sie diese Methode erstellen:Sie würden es verwenden:
quelle
accept
Regel falsch verwendet , wo Sie dieextension
Regel hätten verwenden sollen . ~ Dieaccept
Regel gilt nur für MIME-Typen. Dieextension
Regel gilt für Dateierweiterungen. Sie müssen auch dieadditional-methods.js
Datei für diese Regeln einschließen .$('#formid').validate({ rules: { inputimage: { required: true, extension: "png|jpe?g|gif", filesize: 1048576 }}, messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } });
Dieser Code:
Gibt die Dateigröße für eine Formulareingabe zurück.
Ab FF 3.6 sollte dieser Code lauten:
quelle
Ich veröffentliche auch meine Lösung, die für ein ASP.NET-
FileUpload
Steuerelement verwendet wird. Vielleicht findet es jemand nützlich.quelle
f = this.files[0]
dies sonst in älteren Browsern fehlschlägt. zBif (f && (f.size > 8388608 || f.fileSize > 8388608))
Verwenden Sie unten, um die Dateigröße zu überprüfen und zu löschen, ob sie größer ist.
quelle
Sie können diese Art der Überprüfung mit Flash oder Silverlight durchführen, jedoch nicht mit Javascript. Die Javascript-Sandbox ermöglicht keinen Zugriff auf das Dateisystem. Die Größenprüfung müsste nach dem Hochladen serverseitig durchgeführt werden.
Wenn Sie die Silverlight / Flash-Route verwenden möchten, können Sie überprüfen, ob standardmäßig ein regulärer Handler zum Hochladen von Dateien verwendet wird, der die normalen Steuerelemente verwendet. Auf diese Weise wird die Erfahrung, wenn Silverlight / Flash installiert ist, etwas umfangreicher.
quelle
Ich fand das am einfachsten, wenn Sie nicht vorhaben, das Formular über Standard-Ajax / HTML5-Methoden einzureichen, aber es funktioniert natürlich mit allem.
ANMERKUNGEN:
Das hat früher funktioniert, aber es funktioniert nicht mehr in Chrome. Ich habe gerade den obigen Code getestet und es hat sowohl in ff als auch in Chrome (lastest) funktioniert. Die zweite ["0"] ist jetzt firstChild.
quelle
Bitte versuchen Sie dies:
quelle