Gustav: Problem mit Filereader()

Hallo, ich möchte eine Text-Datei (.txt) beim Laden einer html-Seite oder beim Klick auf einen Button laden und den gelesenen Text ausgeben. Allerdings soll NICHT der Nutzer die zu ladende Datei auswählen - wie es der Filereader() macht - sondern das Script. Ist das mit Filereader() überhaupt möglich oder gibt es da einen Weg mit XMLHttpRequest()? Vielen Dank im Voraus für die Antworten. Gustav

  1. Hallo Gustav,

    ich möchte eine Text-Datei (.txt) beim Laden einer html-Seite oder beim Klick auf einen Button laden und den gelesenen Text ausgeben. Allerdings soll NICHT der Nutzer die zu ladende Datei auswählen - wie es der Filereader() macht - sondern das Script. Ist das mit Filereader() überhaupt möglich

    nein.

    oder gibt es da einen Weg mit XMLHttpRequest()?

    nur (noch) mit Firefox oder Safari. (Edit) Wenn die Seite lokal läuft.

    Gruß
    Jürgen

    1. Hey,

      ich möchte eine Text-Datei (.txt) beim Laden einer html-Seite oder beim Klick auf einen Button laden und den gelesenen Text ausgeben. Allerdings soll NICHT der Nutzer die zu ladende Datei auswählen - wie es der Filereader() macht - sondern das Script. Ist das mit Filereader() überhaupt möglich

      nein.

      Aber PHP macht das doch ganz entspannt oder habe ich die Frage falsch verstanden?

      <?php
      $file = fopen("TEXT-Datei.txt", "r") or die ("Unable to open file!");
      $text = fread($file,filesize("TEXT-Datei.txt"));
      fclose($file);
      echo $text;
      ?>
      

      Und das geht dann doch auch ganz gemütlich als Rückgabewert für einen AJAX Aufruf.

      Gruß
      Jo

      1. Hallo Jo,

        ich glaube nicht, dass man per php auf die Festplatte des Besuchers zugreifen kann. Dafür gibt es das FileReader-API.

        Gruß
        Jürgen

        1. Hey,

          ich glaube nicht, dass man per php auf die Festplatte des Besuchers zugreifen kann. Dafür gibt es das FileReader-API.

          Wer redet denn von der Festplatte des Besuchers? Natürlich kann PHP das nicht.

          Warte, Moment... WAS?

          Irgendeine Webseite (konnte) könnte mit FileReader auf meine Festplatte zugreifen und den Inhalt auslesen? Ich hoffe doch nicht.
          Außer eben eine Datei die der User selbst auswählt und über ein input bereitstellt, wie pl das beantwortet hat.

          Diesen Fall kannte ich noch nicht und mir ist gerade auch schleierhaft wozu man so etwas brauchen könnte. Daher habe ich die Frage falsch verstanden, weshalb ich von einer Datei auf dem Server ausgegangen bin und da es in der Frage auch nicht explizit erwähnt wurde. Deshalb entschuldige meinen Einwand.

          Gruß
          Jo

          1. Tach!

            Irgendeine Webseite (konnte) könnte mit FileReader auf meine Festplatte zugreifen und den Inhalt auslesen? Ich hoffe doch nicht.

            Du hoffst richtig.

            Außer eben eine Datei die der User selbst auswählt und über ein input bereitstellt, wie pl das beantwortet hat.

            Genau das. Alles andere unterbinden die Browser, weil sonst ja jeder dahergelaufene Webserver auf alle Dateien zugreifen könnte.

            Diesen Fall kannte ich noch nicht und mir ist gerade auch schleierhaft wozu man so etwas brauchen könnte.

            Ja mehr der Wunsch aufkommt, den Browswer als Universal-Plattform für Anwendungen verwenden zu können, desto mehr kommen auch die Wünsche, solche Dinge ausführen zu können, die sonst den Desktop-Anwendungen vorbehalten bleiben, beispielsweise Zugriff auf Dateien. In diesem Sinne sind im Laufe dr Zeit noch eine Menge mehr APIs hinzugekommen, die man für den 0815-Webseitenbetrieb nicht unbedingt braucht.

            dedlfix.

            1. Tach!

              In diesem Sinne sind im Laufe dr Zeit noch eine Menge mehr APIs hinzugekommen, die man für den 0815-Webseitenbetrieb nicht unbedingt braucht.

              0815-Webseitenbetrieb -- Ist das ein Fachbegriff?

              MfG

              1. Hallo,

                0815-Webseitenbetrieb -- Ist das ein Fachbegriff?

                Nein, eine Redewendung. Redewendungen sind auch in Fachforen erlaubt.

                Gruß
                Kalk

            2. Hallo dedlfix,

              der Internet Explorer hatte hier mit seinem Zonenkonzept die Möglichkeit, eine Seite als "absolut vertrauenswürdig" zu klassifizieren. Im Enterprise-Umfeld ist das für bestimmte Intranetseiten durchaus sinnvoll. Über ActiveX konnte man dann das FileSystemObject ansprechen und lokale Dateien lesen.

              Gibt es sowas überhaupt noch? Browserübergreifend? Mit einer W3C Spec?

              Weil - wie du sagtest - der Wunsch ist da. Der Bedarf, das auf sichere Weise zu tun, auch. Ob es überhaupt sicher machbar ist, ist eine andere Frage. Malware-Injektion in eine vertrauenswürdige Seite darf nicht möglich sein. Und ein User, dem man aufschwatzt, eine unbekannte Seite als vertrauenswürdig zu setzen, ist auch ein Problem...

              Rolf

              --
              sumpsi - posui - clusi
              1. hi @Rolf B

                Und ein User, dem man aufschwatzt, eine unbekannte Seite als vertrauenswürdig zu setzen, ist auch ein Problem...

                Interessante Feststellung. Aber dem kann man ja abhelfen:

                1. die Seite bei den Suchmaschinen anmelden,
                2. ein Zertifikat beantragen.
                

                Und wer redet da noch von Aufschwatzen 😉

                MfG

                1. Hallo pl,

                  Und wer redet da noch von Aufschwatzen

                  Die Social Engineering Experten...

                  Rolf

                  --
                  sumpsi - posui - clusi
                  1. hi @Rolf B

                    Und wer redet da noch von Aufschwatzen

                    Die Social Engineering Experten...

                    Danke!! Darf ich das auf meinen Blog übernehmen!? Es passt sehr gut zur wachsenden Rolle der sozialen Medien!

                    MfG

                    1. Hallo pl,

                      das ist nicht mein Begriff, also mach damit was Du willst.

                      Ich frage mich aber, woher Du auf deiner Seite den Schluss ziehst, dass ein Kontaktformular im Sinne der DSGVO nicht zulässig sei. Natürlich ist es zulässig. Ich muss nur dazu schreiben, was ich mit der erfassten Mail-Adresse mache. Das ist simpel, naja, beinahe...: Ich speichere sie in der Datenbank meiner Homepage zwecks Sendens einer Antwort. Sie wird an niemanden weitergegeben. Sie wird NUR für die Antwort genutzt, für nichts sonst. Ich lösche sie nach Absenden der Antwort / bewahre sie für Rückfragen für den Zeitraum X auf. Es ist möglich, dass sie durch Datensicherungsprozesse länger gespeichert wird, in diesem Fall steht sie zu Verarbeitungszwecken nicht mehr zur Verfügung. Den letzten Satz kannst Du streichen, wenn Du irgendwie erreichst, dass deine Datensicherung solche Daten ausblendet. Ein paar Rattenschwänze verstecken sich vielleicht noch anderswo...

                      Und das muss die Seite dann auch so tun. Mit https, was dank let's encrypt bezahlbar ist. Die Mailadresse darf in keiner Logdatei landen. Und nach Senden der Antwort muss die Adresse gelöscht werden (bzw. mit Verfallsdatum versehen und dann gelöscht werden). Dass mein Hoster auf die Inhalte meiner Datenbanken nicht zugreift und Mailadressen abgreift, kann ich dazu schreiben (das sollte eine Selbstverständlichkeit sein und im Hostingvertrag drinstehen). Wenn ich meinen Hoster im Verdacht habe, meine DB nach verkaufbaren Daten zu flöhen, gehört er eh gewechselt.

                      Das sind alles Selbstverständlichkeiten, die vorher einfach nicht niedergeschrieben waren oder über die man sich keine Gedanken gemacht hat. Die DSGVO zwingt Dich jetzt, über den Umgang mit den Daten deiner Nutzer exakt nachzudenken und nicht zu schludern. Das kann wehtun. Wenn jemand lieber den Kontakt abbricht, statt seine Schluderei zu beenden - ok, dessen Entscheidung. Nicht die der DSGVO-Autoren.

                      Rolf

                      --
                      sumpsi - posui - clusi
                      1. hi @Rolf B

                        das ist nicht mein Begriff, also mach damit was Du willst.

                        Ich frage mich aber, woher Du auf deiner Seite den Schluss ziehst, dass ein Kontaktformular im Sinne der DSGVO nicht zulässig sei.

                        Nun, ich schrieb da ja was von Zweckbindung welche die DSGVO vorsieht und habe das ebenda auch ausführlich erklärt.

                        MfG

                        1. Hallo pl,

                          du hast seit gestern den Inhalt verändert. Demzufolge ist mein Kommentar jetzt ohne seinen ursprünglichen Bezug. Auf deiner Seite stand was über Kontaktformulare, die gemäß der DSGVO unzulässig seien. Das ist weg.

                          Eine "ausführliche Erklärung, was Zweckbindung ist", ist es aber auch nicht. Es ist Propaganda für deine persönlichen politischen Überzeugungen, und von diesem Bezug distanziere ich mich.

                          Rolf

                          --
                          sumpsi - posui - clusi
              2. Tach!

                der Internet Explorer hatte hier mit seinem Zonenkonzept die Möglichkeit, eine Seite als "absolut vertrauenswürdig" zu klassifizieren. Im Enterprise-Umfeld ist das für bestimmte Intranetseiten durchaus sinnvoll. Über ActiveX konnte man dann das FileSystemObject ansprechen und lokale Dateien lesen.

                Gibt es sowas überhaupt noch? Browserübergreifend? Mit einer W3C Spec?

                Tät mich wundern. Der Nachfolger kann noch nicht mal NTLM als SSO. Der ist also noch weniger fürs Enterprise-Intranet geeignet.

                dedlfix.

                1. Hallo dedlfix,

                  Wir haben Edge nicht in der Firma weil die Win10-Umstellung noch trödelt, und zu Hause mach ich kein SSO, aber - Hä?

                  Rolf

                  --
                  sumpsi - posui - clusi
                  1. Tach!

                    Wir haben Edge nicht in der Firma weil die Win10-Umstellung noch trödelt, und zu Hause mach ich kein SSO, aber - Hä?

                    Das SSO ist da bereits fürs Intranet freigegeben, sonst könnte es der IE ja nicht. Der Edge kann es trotzdem nicht. Der will eine Per-Hand-Anmeldung. Jedenfalls nicht so out-of-the-box wie es der IE macht. Ich las grad, dass man da noch was in ADFS konfigurieren muss, diese Rolle habe ich aber auf meinem DC für den IE nicht installieren müssen. Probier ich vielleicht irgendwann mal.

                    dedlfix.

          2. Hallo J o,

            Wer redet denn von der Festplatte des Besuchers? Natürlich kann PHP das nicht.

            der Fragesteller zum Beispiel, der seine Frage mit den Tags fileupload und javascript versehen hat.

            Viele Grüße
            Robert

  2. Hallo, ich möchte eine Text-Datei (.txt) beim Laden einer html-Seite oder beim Klick auf einen Button laden und den gelesenen Text ausgeben. Allerdings soll NICHT der Nutzer die zu ladende Datei auswählen - wie es der Filereader() macht -

    Der Filereader wählt gar nichts aus. Mit einer Instanz des Filereaders ist es jedoch möglich, eine Datei als Text zu lesen und den gelesenen Text auszugeben:

    <input type="file" id="uplink" onchange="liesdat(this)">
    <script>
    function liesdat(uplink){
        var reader = new FileReader();
        reader.onload = function(){
            console.log(this.result);
        };
        reader.readAsText( uplink.files[0] );
    }
    </script>
    

    MfG