Schneeball: Webseiteninhalt Lokal ablegen

Hallo,

ich möchte, dass ein Benutzer meiner Webseite die Daten, die er über ein Formular eingegeben hat, per Klick auf einen Button in einer lokalen Datei auf seinem Rechner ablegen kann. Er sieht also auf der Webseite die Datensätze die er eingegeben hat in grafisch dargestellter Form, und soll in der Lage sein, diese z.B. in einer mit Semikolon getrennten .txt Datei in einem Verzeichnis seiner Wahl zu speichern.

Ebenso soll es möglich sein, dass der Benutzer seine abgespeicherte Datei per klick auf einen Button wieder öffnen kann, und die Daten von Javascript eingelesen werden.

ist das überhaupt möglich? - welche Funktionen könnten hilfreich sein?

  1. Hi,

    ich bin da nicht so gut bewandert dass ich dir erklären könnte wie man das machen kann.
    Mich würde aber gerne mal interessieren was du vor hast?

    Was wäre denn außerdem wenn der User die Datei auf seinem Rechner verschiebt? Dann findet dein Script die Datei nicht mehr.

    Außerdem ist doch z.B. bei Windows-Rechnern die File-Struktur so aufgebau

    C:\Dokumente und Einstellungen\User\Desktop\

    Was bei mir als User dargestellt ist, ist ein Wert der nach Benutzername des Users variiert.

    Sry, wenn ich grad so negativ bin aber meinst du nicht man könnte das nicht auch anders lösen?

    Z.b. mit einer SQL-Datenbank.
    So kann im Grunde auch keiner deine Seite manipulieren.
    Könnte mir nämlich durchaus vorstellen dass es bei deiner Funktionsweise nicht sehr schwer ist mit einer .txt-Datei deine Seite dann zu manipulieren.

    Grüße

    1. Hi,

      ich bin da nicht so gut bewandert dass ich dir erklären könnte wie man das machen kann.
      Mich würde aber gerne mal interessieren was du vor hast?

      Was wäre denn außerdem wenn der User die Datei auf seinem Rechner verschiebt? Dann findet dein Script die Datei nicht mehr.

      Außerdem ist doch z.B. bei Windows-Rechnern die File-Struktur so aufgebau

      C:\Dokumente und Einstellungen\User\Desktop\

      Was bei mir als User dargestellt ist, ist ein Wert der nach Benutzername des Users variiert.

      Sry, wenn ich grad so negativ bin aber meinst du nicht man könnte das nicht auch anders lösen?

      Z.b. mit einer SQL-Datenbank.
      So kann im Grunde auch keiner deine Seite manipulieren.
      Könnte mir nämlich durchaus vorstellen dass es bei deiner Funktionsweise nicht sehr schwer ist mit einer .txt-Datei deine Seite dann zu manipulieren.

      Grüße

      Ich möchte nicht, dass der User Daten auf meinem Webspace ablegen kann. Ich bezweifle zudem stark, dass er eine Website manipulieren wird, auf deren Dokumente er nur leserechte hat.

      Die Daten sollen per "Speichern unter" Dialog abgelegt werden (er sucht sich ein verzeichnis aus), und sollten auch per "Datei öffnen" Dialog wieder geladen werden können...

      Der Benutzer gibt in meiner Webseite mehrere Datensätze zur Berechnung ein, und damit er diese Daten nicht jedesmal neu ins Formular eintippern muss (eine komfortfrage!) soll er sie abspeichern können.

      1. Also ich würde das ganz einfach mit ner MySQL-Datenbank lösen.

        Habe mir das gerade mal im Kopf "aufgebaut" und sehe bei der Funktionsweise keine Probleme.

        1. Also ich würde das ganz einfach mit ner MySQL-Datenbank lösen.

          Habe mir das gerade mal im Kopf "aufgebaut" und sehe bei der Funktionsweise keine Probleme.

          "Websiteninhalt >>>LOKAL<<< abspeichern"

          ..Sry, aber dann müsste ich ein Loginsystem mit einbauen, damit der User auch an seine ganz persönlichen Tabellen kommt, und ich müsste die Daten der User auf meinem Webspace speichern, und das ist beides nicht drin.
          Zudem steht mir mysql nicht zur verfügung, da das über meinen uniwebspace läuft, und ich dort nix installieren kann.

          ich hab das ganze schon sehr bewusst als Javascript thema verfasst.

          1. Also ich glaube mit Javascript funktioniert das trotzdem nicht.

            Stichwort PHP + Ajax, da du meiner Ansicht nach eine Serverseitige Programmiersprache brauchst.

            Javascript wird ja nur Clientseitig ausgeführt.

            Vielleicht hilft dir das hier weiter:
            http://www.selfphp.de/forum/showthread.php?p=112164

            Grüße

      2. Hallo,

        Die Daten sollen per "Speichern unter" Dialog abgelegt werden (er sucht sich ein verzeichnis aus), und sollten auch per "Datei öffnen" Dialog wieder geladen werden können...

        Folgendes könnte ich mir vorstellen...

        Speichern:
        Der Client schickt die Daten per AJAX zum Server. Dieser speichert sie temporär in einer Datei und schickt als Antwort auf den AJAX-Request den Dateinamen. Der Client lädt daraufhin die Datei herunter uns speichert sie lokal. Der Server löscht nach kurzer Zeit die temporäre Datei wieder.

        Öffnen:
        Client wählt die lokale Datei zum "Upload" und schickt dann einen AJAX-Request. Der Server liest die hochgeladene Datei und schickt den Inhalt als Antwort an den Client. Der Server löscht nach kurzer Zeit die hochgeladene Datei wieder.

        Umständlich - sollte aber möglich sein.

        Gruß, Don P

        1. Hi,

          Folgendes könnte ich mir vorstellen...

          Speichern:
          Der Client schickt die Daten per AJAX zum Server. Dieser speichert sie temporär in einer Datei und schickt als Antwort auf den AJAX-Request den Dateinamen. Der Client lädt daraufhin die Datei herunter uns speichert sie lokal. Der Server löscht nach kurzer Zeit die temporäre Datei wieder.

          Öffnen:
          Client wählt die lokale Datei zum "Upload" und schickt dann einen AJAX-Request. Der Server liest die hochgeladene Datei und schickt den Inhalt als Antwort an den Client. Der Server löscht nach kurzer Zeit die hochgeladene Datei wieder.

          Ich könnte mir beides *ohne* AJAX vorstellen.

          MfG ChrisB

          --
          “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          1. Hallo,

            Ich könnte mir beides *ohne* AJAX vorstellen.

            Ja, ich eigentlich auch. Aber AJAX läuft so schön im Hintergrund ist ist doch so modern ;)
            Ist AJAX denn ein Problem?

            Gruß, Don P

            1. Hi,

              Ich könnte mir beides *ohne* AJAX vorstellen.

              Ja, ich eigentlich auch. Aber AJAX läuft so schön im Hintergrund ist ist doch so modern ;)
              Ist AJAX denn ein Problem?

              Ja, es verkompliziert die Sache unnötig.

              Wenn du im ersten Schritt die Formulardaten per AJAX zum Server schickst, dann landet dessen Antwort darauf auch „im JavaScript“ - und damit hast du wiederum keine Möglichkeit, sie direkt auf Platte abzulegen oder den Speichern-Dialog aufzurufen. Klar, du könntest nach dem Request per location.href auf eine Adresse „umleiten“, unter der der Server die Daten dann mit passendem Content-Type-Header wieder ausgibt, und so den Speichern-Dialog provozieren - aber das wären zwei Requests statt einem, und du müsstest die Daten serverseitig auch noch zwischenspeichern (Session o.ä.).

              Schickst du stattdessen ganz normal ein Formular an den Server ab, kann dieser darauf direkt mit der Ausgabe (bzw. Rückgabe, mehr ist es ja eigentlich nicht) nach einem passenden Content-Type-Header antworten - Speichern-Dialog erscheint, alles fein, kaum Aufwand verglichen mit obigem.

              Und auch der umgekehrte Weg ist komplizierter (bis unmöglich), wenn man dafür auf Teufel komm raus AJAX einsetzen wollte. Klar, du kannst mit einem File-Inputfeld eine Datei vom lokalen Rechner auswählen lassen - aber du hast mit JS unter normalen Umständen keinen Zugriff auf den Inhalt dieser Datei, also kannst du ihn auch nicht per AJAX zum Server schicken. (Dass es in manchen Browsern inzwischen Möglichkeiten gibt, das unter bestimmten Umständen [Sicherheitseinstellungen] bzw. mit bestimmten Zusatztechniken [JAVA, Flash, Active-X] trotzdem zu realisieren, ist schön und gut - aber einen so simplen Vorgang wie den hier derart zu komplizieren und damit von noch mehr äusseren Faktoren abhängig und somit fehleranfälliger zu machen, kann ja kaum Sinn der Sache sein.)

              Nimmst du auch hier wieder ein stinknormales Upload-Formular, kann der Nutzer seine gespeicherten Daten simpel an den Server senden, dieser bereitet sie auf, und erstellt ein Antwortdokument, in dem sie an den passenden Stellen bereits eingetragen sind - viel simpler geht's nicht.

              Zwar ist es natürlich auch nicht das „Gelbste vom Ei“, die Daten zur Speicherung erst vom Client an den Server und wieder zurück zu schicken, und zum Laden noch mal das gleiche in grün - aber es ist eine sehr simple, einfach realisierbare und im Vergleich zu Alternativen wenig fehlerträchtige Methode, und da es sich hier nur um „ein paar Datensätze“ handeln soll laut Problembeschreibung, dürften zusätzlicher Traffic und Zeitbedarf auch akzeptabel sein unter den vorliegenden Bedingungen.

              Natürlich geht dieser Weg nur so lange, wie die Applikation nur dann verfügbar sein muss, wenn der Nutzer auch online ist.
              Soll das ganze lokal ablaufen (und auch die Berechnungen nur lokal per Script vorgenommen werden), dann müsste man sich etwas anderes überlegen.

              Dann (nicht *nur* dann) wäre überlegenswert, ob man das ganze auch mittels DOM Storage erledigen könnte. Die Verfügbarkeit ist in aktuellen Browsern ja auch recht gut, und man unterliegt weniger Einschränkungen (bspw. hinsichtlich Datenmenge) als bei Nutzung von herkömmlichen Cookies.

              MfG ChrisB

              --
              “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
              1. Hallo ChrisB,

                Dann (nicht *nur* dann) wäre überlegenswert, ob man das ganze auch mittels DOM Storage erledigen könnte. Die Verfügbarkeit ist in aktuellen Browsern ja auch recht gut, und man unterliegt weniger Einschränkungen (bspw. hinsichtlich Datenmenge) als bei Nutzung von herkömmlichen Cookies.

                Aha: DOM Storage scheint doch genau die gesuchte Lösung zu sein.
                Soviel ich verstanden habe, werden die Daten dabei vom Client auf dem Client-Rechner gespeichert. Genau das war doch im Ausgangsposting gefordert. Das interessiert auch mich... wenn der Server davon weitgehend unbelästigt bleibt, ist es optimal.

                Gruß, Don P

  2. Mahlzeit Schneeball,

    ich möchte, dass ein Benutzer meiner Webseite die Daten, die er über ein Formular eingegeben hat, per Klick auf einen Button in einer lokalen Datei auf seinem Rechner ablegen kann.

    Weder Server-seitige Skripte noch Browser-seitige Javascript-Eingines haben (schreibenden) Zugriff auf das lokale Dateisystem ... Dein Ansinnen ist von vornherein zum Scheitern verurteilt.

    Er sieht also auf der Webseite die Datensätze die er eingegeben hat in grafisch dargestellter Form, und soll in der Lage sein, diese z.B. in einer mit Semikolon getrennten .txt Datei in einem Verzeichnis seiner Wahl zu speichern.

    Du kannst die Datensätze als CSV-Datei an den Browser schicken und diesem sagen, er solle bitte beim Benutzer nachfragen, wie und wo diese Datei gespeichert werden soll. Ob der Browser das tut, kannst Du aber nicht beeinflussen.

    Ebenso soll es möglich sein, dass der Benutzer seine abgespeicherte Datei per klick auf einen Button wieder öffnen kann, und die Daten von Javascript eingelesen werden.

    Das ist in vernünftigen Browsern aufgrund entsprechende Sicherheitseinstellungen nicht möglich (s.o.).

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Weder Server-seitige Skripte noch Browser-seitige Javascript-Eingines haben (schreibenden) Zugriff auf das lokale Dateisystem ... Dein Ansinnen ist von vornherein zum Scheitern verurteilt.

      Das ist in vernünftigen Browsern aufgrund entsprechende Sicherheitseinstellungen nicht möglich (s.o.).

      MfG,
      EKKi

      Danke für die stichhaltige Aufklärung. Dann werde ich mir wohl gegebenenfalls Webspace mit php und/oder sql unterstützung anschaffen müssen.

  3. Lieber Schneeball,

    wenn ich diesen Thread richtig verstanden habe, suchst Du eine Möglichkeit, wie Du dem User das Eingeben komplexer Daten vereinfachen kannst, indem der User seine Eingabe in Form einer Datei macht, bzw. erneute Eingaben über diese Datei machen kann.

    Inwieweit wäre denn das Speichern in einem Cookie für Dich ein gangbarer Weg?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      Inwieweit wäre denn das Speichern in einem Cookie für Dich ein gangbarer Weg?

      oder als URL-Parameter und dann in den Bookmarks, so mache ich es auf dieser Seite:  http://www.j-berkemeier.de/Ritzelrechner.html?kb=30,42,52+rz=23,21,19,17,16,15,14,13,12+tf=90+ru=211+vr=3-2-3+ge=false+rt=false

      Gruß, Jürgen

      1. Hallo Felix,

        Inwieweit wäre denn das Speichern in einem Cookie für Dich ein gangbarer Weg?

        oder als URL-Parameter und dann in den Bookmarks, so mache ich es auf dieser Seite:  http://www.j-berkemeier.de/Ritzelrechner.html?kb=30,42,52+rz=23,21,19,17,16,15,14,13,12+tf=90+ru=211+vr=3-2-3+ge=false+rt=false

        Gruß, Jürgen

        Das würde den umfang übersteigen, zumal der Nutzer ja mehrere Datensätze abspeichern, und gezielt wieder laden können soll. Kann man nicht eine temporäre html oder txt datei erzeugen, die dann direkt per href zum download angeboten wird?