5 Stimmen

Das HTML-4-Äquivalent zum FileReader von HTML 5?

Ich habe eine Webseite, die in der Lage sein muss, Dateien von dem lokalen Rechner, auf dem der Browser läuft, in das DOM zu laden. Ich habe festgestellt, dass dies mit der HTML 5 File API sehr einfach zu bewerkstelligen ist.

Ich kann es einfach tun:

var reader = new FileReader();  
reader.onload = function (fileContents) { ... load contents to a div ... }
reader.readAsText(f) //where f is an HTML5 File object

Ärgerlicherweise muss das im IE7 funktionieren, und auch in einigen früheren Versionen von Firefox, die die API nicht unterstützen. Gibt es eine einfache Möglichkeit, eine lokale Datei in das DOM in älteren Browsern zu laden?

Vielen Dank!

0 Stimmen

Die Datei-API - w3.org/TR/FileAPI - ist nicht Teil von HTML5 (nur fürs Protokoll)

6voto

driis Punkte 156110

Nein, das ist in älteren Browsern nicht möglich. FileReader (eigentlich jeder Dateisystemzugriff) ist eine neue HTML5-Funktion, die in älteren Browsern nicht unterstützt wird.

Die beste Option in einem älteren Browser ist entweder:

  1. Eine Silverlight-, Flash- oder Java-Anwendung (oder ähnliches), die auf der Client-Seite läuft und Zugriff auf das lokale Dateisystem hat.
  2. Das Hochladen von Dateien durch den Benutzer mit dem <input type="file"> Element, und führen Sie die Verarbeitung serverseitig durch.

0 Stimmen

Dies ist wahr, aber es gibt eine IFrame-Ansatz, der auch ohne Verwendung von Browser-Plugins oder zusätzliche Server-seitige Verarbeitung, wenn auch ein bisschen ein Hack ... siehe meine Antwort unten oder check this out.... alfajango.com/blog/ajax-file-uploads-mit-dem-iframe-verfahren

5voto

Jon Artus Punkte 6048

Zusätzlich zu den anderen Antworten hier, scheint es keine konsistente Methode zu geben, dies clientseitig (außer Flash) für ältere Browser zu tun.

Für IE7/8 ist es mir jedoch gelungen, mit ActiveX etwas zu basteln.

var filePath = f:\oo.txt;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var textStream = fso.OpenTextFile(filePath);
var fileData = file.ReadAll();

Ich kann dies dann an die gleiche Funktion wie reader.onload in der obigen Frage übergeben. Offensichtlich ist dies eine schlechte, hacky Lösung, und wahrscheinlich durch einige Sicherheitsrichtlinien blockiert werden - es funktioniert zumindest für IE7 aber!

0 Stimmen

Hey Jon, ich habe mir dein Beispiel angesehen, aber ich habe einen Fehler erhalten: Automation Server kann kein Objekt erstellen. was denke ich?

0 Stimmen

Gehen Sie zu Internetoptionen -> Sicherheit -> Benutzerdefinierte Ebene und aktivieren Sie 'ActiveX-Steuerelemente initialisieren und skripten, die nicht als sicher für Skripte markiert sind'.

3voto

Haochi Punkte 2121

Sieht so aus, als ob man das mit Flash machen kann. Flash-Alternative für FileReader HTML 5 API

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X