Donald: Verzwickt: Daten speichern (Client) oder senden (Server)

Hallo,

Ich möchte Datensätze in einer HTML-Datei einbetten. Ich bin noch nicht sicher ob als

  • Hidden-Field content (Base64 encoded)
  • Base64 encoded Kommentare <!-- data:xxxxxxxxxxx -->
  • Embedded Image mit src="data:image/png;base64,xxxxxxx"

Das Problem ist jetzt die Anforderung:

  • Die Daten sollen entweder als Binärdatei (zB "Content.xls") lokal speicherbar sein oder
  • per HTTPS-POST an einen Bearbeitungs-Server gesendet werden können.

JavaScript ist möglich. Serverseitiges PHP auch. Wie kann ich das erreichen?

Hintergrund: Ausgeliefert wird die HTML-Datei mit Anleitung etc. Wenn man online ist, können die Daten online verarbeitet werden. Ist man offline, sollen die Daten unbedingt zumindest speicherbar sein.

Hat jemand eine Idee?

Donald

  1. Hi,

    Ich möchte Datensätze in einer HTML-Datei einbetten.

    Woher kommen diese Daten?

    Ich bin noch nicht sicher ob als

    • Hidden-Field content (Base64 encoded)

    Wozu Base64?
    HTML-eigene Zeichen korrekt kodiert zu notieren, sowie ggf. mit dem Begrenzerzeichen des value-Attributes aufzupassen, sollte doch reichen.

    • Base64 encoded Kommentare <!-- data:xxxxxxxxxxx -->

    Wozu Base64?
    S.o.

    Btw: Wenn du das irgendwann mal als XML parsen lassen wirst, ist's damit Essig - weil ein XML-Parser als erstes mal Kommentare zu entfernen *hat*.

    • Embedded Image mit src="data:image/png;base64,xxxxxxx"

    Handelt es sich denn um Daten, die als Bild interpretierbar sind?

    Das Problem ist jetzt die Anforderung:

    • Die Daten sollen entweder als Binärdatei (zB "Content.xls") lokal speicherbar sein oder

    Bei allen drei Moeglichkeiten oben - wie? Copy&Paste aus dem Quelltext durch den Nutzer, oder ...?

    • per HTTPS-POST an einen Bearbeitungs-Server gesendet werden können.

    Na dann waere das Formularfeld auf den ersten Blick wohl das sinnvollste.

    MfG ChrisB

    --
    "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
  2. Hallo,

    Du kannst nicht offline innerhalb eines HTML-Dokuments plötzlich ein Excel-Dokument erzeugen. Vielleicht kann man über ActiveX im IE Excel ansprechen, aber das wird schwierig und unzuverlässig sein.

    Natürlich könnte man ein Excel-Dokument in Form von Data-URIs in einem HTML-Dokument unterbringen, aber das unterstützen nur die wenigsten Browser und das ist auch weniger Sinn der Sache, in einem <a href="..."> dutzende Kilobyte unterzubringen.

    Daten in versteckten Formularfelden unterzubringen wird kein Problem sein, aber wie du die »Offline«-Komponente realisieren willst, ist mir schleierhaft. Wozu brauchst du das ganze denn?

    Mathias

    1. Hallo,

      Die Daten werden nicht erzeugt, sondern ich muss die Daten liefern. Und zwar ausschliesslich als HTML. Der Empfänger soll das dann per Doppelklick öffnen können (IE, Firefox, Opera etc.). Darin soll jetzt enthalten sein (wie bereitsim ersten Posting erwähnt): ein Excel-Dokument. Da das Binärdaten sind, encodiere ich die Daten mit Base64. Ich kann die Daten auf verschiedene Weisen einbinden (siehe erstes Posting).

      Die Aufgabe besteht nun darin, dass der Empfänger des HTML diese Excel-Datei nun entweder:

      1. Per Link oder Button an einen Online-Server senden kann (online)
      2. Per Link oder Button lokal speichern kann (offline)

      Das senden an einen Webserver (Punkt 1) bekomme ich auf verschiedene Arten hin: als Formular in Hidden-Fields oder auch als AJAX mit http_request.open() und POST.

      Punkt zwei macht mir Sorgen, denn ich kann mit JavaScript nix lokal speichern. In diesem Fall ist der User meist auch offline und ich kann nix Serverseitiges machen.

      Kann ich denn per JavaScript ein PopUp-Fenster generieren welches dann die Daten als Download-Link anbietet? Sozusagen per JavaScript die eingebetteten Daten lesen (GetInnerText()) und dann so machen dass man es per Browser-Link speichern kann? Resultat soll die Excel-Datei sein.

      Grüsse,

      Donald

      1. Hallo,

        1. Per Link oder Button an einen Online-Server senden kann (online)
        2. Per Link oder Button lokal speichern kann (offline)

        Das senden an einen Webserver (Punkt 1) bekomme ich auf verschiedene Arten hin: als Formular in Hidden-Fields oder auch als AJAX mit http_request.open() und POST.

        Mit XMLHttpRequest kannst du nicht aus einem lokalen Dokument fremde Server kontaktieren, das verletzt die Same-Origin Policy.

        Punkt zwei macht mir Sorgen, denn ich kann mit JavaScript nix lokal speichern.

        Mit ActiveX und scheunentorweiten Sicherheitseinstellungen vielleicht.

        Kann ich denn per JavaScript ein PopUp-Fenster generieren welches dann die Daten als Download-Link anbietet?

        Nein.

        Sozusagen per JavaScript die eingebetteten Daten lesen (GetInnerText()) und dann so machen dass man es per Browser-Link speichern kann?

        Das geht nicht.

        Mathias