Frage

Ich habe Upload-Datei Funktionalität auf einem der Seite. Ich überprüfe für die Erweiterung der Datei mit Hilfe von JavaScript. Jetzt möchte ich den Benutzer daran hindern, Datei größer als 1 MB hochladen. Gibt es eine Möglichkeit, die Größe mit Hilfe von JavaScript-Datei-Upload überprüfen.

Mein Code zur Zeit wie folgt aussehen:

<script language="JavaScript">
function validate() {
   var filename = document.getElementById("txtChooseFile").value;
   var ext = getExt(filename);
   if(ext == "txt" || ext == "csv")
      return true;
   alert("Please upload Text files only.");
   return false;
}

function getExt(filename) {
   var dot_pos = filename.lastIndexOf(".");
   if(dot_pos == -1)
      return "";
   return filename.substr(dot_pos+1).toLowerCase();
}
</script>
War es hilfreich?

Lösung

Andere, dass der Dateiname aquiring gibt es keine Möglichkeit für Sie weitere Details über die Datei in Javascript, um herauszufinden, einschließlich seiner Größe.

Stattdessen sollten Sie serverseitiges Skript konfigurieren einen überdimensionalen Upload zu blockieren.

Andere Tipps

Siehe http://www.w3.org/TR/FileAPI/ . Es wird von Firefox 3.6 unterstützt; Ich kenne keinen anderen Browser zu.

Im onchange Fall eines <input id="fileInput" type="file" /> einfach:

var fi = document.getElementById('fileInput');
alert(fi.files[0].size); // maybe fileSize, I forget

Sie können auch den Inhalt der Datei als String zurück, und so weiter. Aber auch hier kann dies nur mit Firefox 3.6 arbeiten.

Jetzt ist es möglich, Dateigröße unter Verwendung von reinem JavaScript zu erhalten. Fast alle Browser-Unterstützung Filereader, die Sie verwenden können Dateigröße als auch zu lesen, wie Sie Bild ohne das Hochladen von Dateien auf dem Server zeigen. Link

Code:

    var oFile = document.getElementById("file-input").files[0]; // input box with type file;
    var img = document.getElementById("imgtag");
    var reader = new FileReader();
    reader.onload = function (e) {
            console.log(e.total); // file size 
            img.src =  e.target.result; // putting file in dom without server upload.

   };
   reader.readAsDataURL(oFile );

Sie können Dateigröße direkt aus dem Datei-Objekt mit folgendem Code.

 var fileSize = oFile.size;

Die meisten dieser Antworten sind Art und Weise out-of-date. Es ist derzeit möglich, Dateigröße Client-Seite in jedem Browser, um zu bestimmen, welche den Datei-API unterstützt. Dazu gehören so ziemlich alle anderen Browsern als IE9 und älter.

Es könnte möglich sein, viele Browser-spezifischen Code. Werfen Sie einen Blick auf die Quelle der TiddlyWiki , die sich durch Verhaken in Windows auf der Benutzerfestplatte speichern verwaltet Scripting Host (IE), XPCOM (Mozilla), etc.

Ich glaube nicht, dass es irgendeine Art und Weise zu tun, dass mit einfacher JS von einer Webseite.
Mit einer Browser-Erweiterung vielleicht, aber von einer Seite Javascript nicht das Dateisystem aus Sicherheitsgründen zugreifen kann.

Flash und Java sollten ähnliche Einschränkungen haben, aber vielleicht sind sie ein bisschen weniger streng.

nicht möglich. wäre Sorge eine große Sicherheits Client-Seite Skripte zu ermöglichen, dass ausführen kann Datei-Info aus und Endanwendern Festplatte.

lesen

Sehen Sie hier:

http: // www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

In Bezug auf all die Leute sagen, diese Server-Seite getan werden muss, sind sie absolut Fleck auf sie tut.

In meinem Fall, obwohl die maximale Größe der Ausnahme wird 128Mb ist, wenn ein Benutzer etwas zu laden versucht, die ist 130 MB sollten sie nicht die 5 Minuten Ladezeit warten müssen, um herauszufinden, es ist zu groß, so brauche ich ein zu tun zusätzliche Prüfung, bevor sie die Seite für die Benutzerfreundlichkeit zuliebe vor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top