Gibt es eine Möglichkeit, die Dateigröße vor dem Hochladen mit JavaScript zu überprüfen ?
Gibt es eine Möglichkeit, die Dateigröße vor dem Hochladen mit JavaScript zu überprüfen ?
Ja , es gibt eine neue Funktion aus dem W3C, die von einigen modernen Browsern unterstützt wird, die Datei-API . Es kann für diesen Zweck verwendet werden, und es ist einfach zu testen, ob es unterstützt wird, und (falls erforderlich) auf einen anderen Mechanismus zurückzugreifen, wenn dies nicht der Fall ist.
Hier ist ein vollständiges Beispiel:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Data</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function showFileSize() {
var input, file;
// (Can't use `typeof FileReader === "function"` because apparently
// it comes back as "object" on some browsers. So just see if it's there
// at all.)
if (!window.FileReader) {
bodyAppend("p", "The file API isn't supported on this browser yet.");
return;
}
input = document.getElementById('fileinput');
if (!input) {
bodyAppend("p", "Um, couldn't find the fileinput element.");
}
else if (!input.files) {
bodyAppend("p", "This browser doesn't seem to support the `files` property of file inputs.");
}
else if (!input.files[0]) {
bodyAppend("p", "Please select a file before clicking 'Load'");
}
else {
file = input.files[0];
bodyAppend("p", "File " + file.name + " is " + file.size + " bytes in size");
}
}
function bodyAppend(tagName, innerHTML) {
var elm;
elm = document.createElement(tagName);
elm.innerHTML = innerHTML;
document.body.appendChild(elm);
}
</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='fileinput'>
<input type='button' id='btnLoad' value='Load' onclick='showFileSize();'>
</form>
</body>
</html>
Und hier ist es in Aktion. Versuchen Sie dies mit einer aktuellen Version von Chrome oder Firefox.
Etwas abseits des Themas, aber: Beachten Sie, dass die clientseitige Validierung kein Ersatz für die serverseitige Validierung ist. Die clientseitige Validierung dient lediglich dazu, eine bessere Benutzererfahrung zu ermöglichen. Wenn Sie beispielsweise das Hochladen einer Datei mit mehr als 5 MB nicht zulassen, können Sie mithilfe der clientseitigen Überprüfung überprüfen, ob die vom Benutzer ausgewählte Datei nicht größer als 5 MB ist, und ihnen gegebenenfalls eine nette, freundliche Nachricht senden (so dass sie nicht verbringen die ganze Zeit das Hochladen nur das Ergebnis erhalten auf dem Server weggeworfen), aber Sie müssen auch diese Grenze auf dem Server durchzusetzen, da alle clientseitigen Grenzen (und andere Validierungen) umgangen werden kann.
Verwenden von jquery:
quelle
MiB
wenn Sie zur Basis von berechnen1024
.Funktioniert für dynamische und statische Dateielemente
Nur Javascript- Lösung
quelle
size
Eigenschaft$(obj).files[0].size/1024/1024;
Aber änderte es zuobj.files[0].size/1024/1024;
NeinJa, Verwenden der Datei-API in neueren Browsern. Einzelheiten finden Sie in der Antwort von TJ.Wenn Sie auch ältere Browser unterstützen müssen, müssen Sie dazu einen Flash-basierten Uploader wie SWFUpload oder Uploadify verwenden.
Die SWFUpload Features Demo zeigt, wie die
file_size_limit
Einstellung funktioniert.Beachten Sie, dass dies (offensichtlich) Flash benötigt und sich die Funktionsweise ein wenig von normalen Upload-Formularen unterscheidet.
quelle
Es ist ziemlich einfach.
quelle
Wenn Sie jQuery Validation verwenden, können Sie Folgendes schreiben:
quelle
Ich habe so etwas gemacht:
quelle
Ich verwende eine Haupt-Javascript-Funktion, die ich auf der Mozilla Developer Network-Website https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications gefunden habe , zusammen mit einer anderen Funktion mit AJAX, die ich gemäß meinen Anforderungen geändert habe. Es erhält eine Dokumentelement-ID bezüglich der Stelle in meinem HTML-Code, an der ich die Dateigröße schreiben möchte.
Prost
quelle
Obwohl die Frage beantwortet ist, wollte ich meine Antwort posten. Könnte für zukünftige Zuschauer nützlich sein. Sie können es wie im folgenden Code verwenden.
quelle
Das in diesem Thread bereitgestellte JQuery-Beispiel war extrem veraltet, und Google war überhaupt nicht hilfreich. Hier ist meine Überarbeitung:
quelle
Sie können diesen Fineuploader ausprobieren
Es funktioniert gut unter IE6 (und höher), Chrome oder Firefox
quelle
Wenn Sie den Ie-Dokumentmodus auf "Standards" setzen, können Sie die einfache Javascript-Methode "Größe" verwenden, um die Größe der hochgeladenen Datei zu ermitteln.
Stellen Sie den Ie 'Document Mode' auf 'Standards' ein:
Verwenden Sie dann die Javascript-Methode 'size', um die Größe der hochgeladenen Datei zu ermitteln:
Für mich geht das.
quelle