Reimund Dratwa: Datei-Lesezugriff aus Javascript

Hi,

sicher bin ich nicht der Erste, der über die Frage stolpert, inwiefern Dateizugriffe aus Javascript nun möglich sind. Natürlich ist mir klar, dass es in der Natur einer solchen Sprache wie Javascript liegt, beliebige Dateizugriffe zu unterbinden.
Für Lesezugriffe über den Umweg eines in ein verborgenen Inline-Frame geladenen Text-Dokumentes habe ich Euch unter http://ray.tscc.de/lost+found/JSfileaccess.zip ein kleines Beispiel vorbereitet, jedoch wird für dessen Funktionalität die Unterstützung von IFrames vorausgesetzt. Zudem konnte ich das Skript nur unter Firefox 2.0 und dem IE 4.0 testen.
Leider wird das geladene Dokument in eine <pre></pre> (Firefox) bzw. <XMP></XMP> (IE) Umgebung eingebettet, sodass der Inhalt der gelesenen Daten zunächst mal um diese Tags beschnitten werden müssten, will man an die "rohen Daten".

Meine Frage an Euch nun: Sind elegantere Lösungen/Workarounds bekannt (von serverseitigen Lösungen in CGI, PHP mal abgesehen), oder könnt ihr mich sogar konkret auf ältere Threads hier verweisen.

Gruß,
Ray

  1. Meine Frage an Euch nun: Sind elegantere Lösungen/Workarounds bekannt (von serverseitigen Lösungen in CGI, PHP mal abgesehen)

    Warum denn? Lad dir doch auf Web 2.0 Wege mit dem xmlHttpRequest-Objekt die Daten vom Server. Wenn das sinnvoll gestalten wird, ists eine wirkliche Bereicherung fuer die Applikation!

  2. Für Lesezugriffe über den Umweg eines in ein verborgenen Inline-Frame geladenen Text-Dokumentes habe ich Euch unter http://ray.tscc.de/lost+found/JSfileaccess.zip ein kleines Beispiel vorbereitet, jedoch wird für dessen Funktionalität die Unterstützung von IFrames vorausgesetzt. Zudem konnte ich das Skript nur unter Firefox 2.0 und dem IE 4.0 testen.

    iframes sind durchaus verbreitet, das was du hier demonstrierst ist eine völlig normale Sache. Sie funktioniert nur bei Dateitypen die dein Browser anzeigen kann und nur wenn die Datei von der gleichen Domain wie das JS kommt.
    Wenn du auf die Unterstützung der 4'er Browser verzichten kannst, kannst du das iframe Element auch mit createElement erzeugen und musst es nicht in den HTML Code einbauen.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hi,

      danke für die flotte Antwort.

      iframes sind durchaus verbreitet, das was du hier demonstrierst ist eine völlig normale Sache. Sie funktioniert nur bei Dateitypen die dein Browser anzeigen kann und nur wenn die Datei von der gleichen Domain wie das JS kommt.
      Wenn du auf die Unterstützung der 4'er Browser verzichten kannst, kannst du das iframe Element auch mit createElement erzeugen und musst es nicht in den HTML Code einbauen.

      »»
      gut, das beruhigt mich. Mir ging's eigentlich in der Hauptsache um die <pre> bzw. <XMP> tags, die der Browser dem Text hinzufügt. Beim IE kam ich mittels der innerText-Eigenschaft sogar an den Rohtext heran, jedoch existiert diese beim Firefox offensichtlich nicht oder nicht mehr... aber gut ein wirkliches Problem stellen die Tags nicht dar.
      Deinen Vorschlag, das iframe aus dem Skript zu erzeugen klingt auch gut, somit wäre bei externem Skript das "Datei-Hick-Hack" für den Leser des HTML-Codes komplett transparent, was für mich ganz gut (sprich eleganter) klingt.

      Vielen Dank nochmal und einen guten Rutsch,
      Ray