Aufruf von autoit generierter HTML Datei plus Input File ohne Webserver

  • Hallo zusammen,

    ich habe heute mal eine Frage leicht außerhalb von Autoit. Vor vielen Monden haben ich mir mal ein Script gebaut, welches diverse Datenbanken abfrägt, das Ergebnis in eine Datei schreibt, parallel ein HTML Gerüst baut. Am Ende ruft das Autoit Script die HTML Datei "lokal" auf, das HTML Gerüst zieht sich dann den Inhalt der Datei rein und ich "sah" eine perfekte Tabelle. Soweit alles gut.

    Jetzt ... viele Monde später ... bekomme ich nur noch mein H1 Überschrift zu sehen. Erst dachte ich, die Zugangsdaten zu den Datenbanken hätten sich geändert, aber als ich Step by Step nochmals alles durch ging, konnte ich feststellen, das meine Datei noch generiert wird. Alle notwendigen Dateien liegen in ein und demselben Verzeichnis.

    In der Zwischenzeit habe ich das Problem gefunden, hätte auch eine Lösung, suche aber eine andere Lösung.

    Code
    So geht es nicht: file:///C:/C4F/MeineTabelle.html
    Code
    So geht es: https://127.0.0.1/MeineTabelle.html

    sprich, wenn ich lokal z.B. einen XAMPP laufen lasse und die Datei aus dem Webserver aufrufe, dann ist alles OK. Wird die Datei aber direkt aus dem Filesystem aufgerufen, dann wird Sie nicht eingelesen.

    Jetzt meine Frage: Gibt es eventuell noch eine andere Lösung als einen lokalen Webserver? Wenn nein, was wäre den der kleinste performante Webserver ohne viel Schnick Schnick drum rum?

    Hier noch der Inhalt der HTML Datei:

    Vielen Dank

  • Ich weiß ja nicht wie viele Monde das her ist, aber direkter Dateizugriff ist meist deaktiviert, damit Webseiten nicht den Inhalt des Userdatenträgers auslesen können.

    Nur sollte das eigentlich nicht der Fall sein wenn du die HTML-Datei im Browser öffnest ohne Webserver.

    Anders siehts wiederum aus bei Javascript, dort werden die Dateien auf dem PC mit XMLHttpRequests (oder wie das heißt) angefordert.

    Webbrowser sollten diese direkt blockieren, auch wenn du die HTMl-Datei direkt öffnest.

    Ich kann in deinem Code allerdings nichts davon erkennen, dass die Tabelle in irgendeinerweise direkt in die HTML geladen (oder in die HTML generiert wird).

    Verwendest du JS zum laden sollte es eigentlich reichen, wenn du ein file input verwendest, denn wenn der User die Datei auswählt (die geladen werden soll) lassen Webbrowser für gewöhnlich den Zugriff zu.

    Tutorials wie man Dateien lädt findest du überall im Netz.

  • Wie rufst du denn die Datei auf? - einfach ShellExecute und //file/ davor?

    Habe jetzt mal bei mir getestet indem ich die Datei als Parameter beim Aufruf des Browsers mitgebe und die werden bei mir damit sowohl mit IE, Edge, Chromium und FireFox korrekt angezeigt mit allen Abhängigkeiten.

    Ganz naiv so rangegangen:

    AutoIt
    $s_HtmlDateiPfad = "C:\Pfad\zu\meiner\Datei\Test.html"
    
    $s_StandardBrowser = RegRead('HKEY_CLASSES_ROOT\htmlfile\shell\open\command', '')
    
    Run(StringReplace($s_StandardBrowser, '%1', $s_HtmlDateiPfad))
  • Wie rufst du denn die Datei auf? - einfach ShellExecute und //file/ davor?

    Habe jetzt mal bei mir getestet indem ich die Datei als Parameter beim Aufruf des Browsers mitgebe und die werden bei mir damit sowohl mit IE, Edge, Chromium und FireFox korrekt angezeigt mit allen Abhängigkeiten.

    Ganz naiv so rangegangen:

    AutoIt
    $s_HtmlDateiPfad = "C:\Pfad\zu\meiner\Datei\Test.html"
    
    $s_StandardBrowser = RegRead('HKEY_CLASSES_ROOT\htmlfile\shell\open\command', '')
    
    Run(StringReplace($s_StandardBrowser, '%1', $s_HtmlDateiPfad))

    Bei mir ist der Pfad des Standardbrowsers nicht unter ...\htmlfile\..., sondern unter ...\http\.... bzw. ...\https\... abgelegt.

  • Bei mir ist der Pfad des Standardbrowsers nicht unter ...\htmlfile\..., sondern unter ...\http\.... bzw. ...\https\... abgelegt.

    Es geht mir nicht um den Standardbrowser, sondern um den mit dem HTML-Dateien verknüpft sind. \http\ und \https\ sind die Einträge die greifen wenn Protokoll-Links aufgerufen werden. Also wenn ein Link mit http:// bzw. https:// aufgerufen wird. Hier willst du aber genau das ja nicht, sondern direkt eine HTML-Datei aufrufen. Und im Normalfall findet man unter dem hierfür entsprechenden Zweig HKCR\.html im Standardkey den Verweis auf den entsprechenden Handler. In meinem Fall htmlfile. Würde mich bisschen wundern wenn bei dir dort http oder https steht.

    Im Grunde ist das auch völlig wumpe da es mir nicht darum ging ideal deinen normalen Browser zu bestimmen, sondern um die Frage ob ein direkter Aufruf der Browser.exe mit dem Dateipfad als Parameter dein Problem beseitigt. - Hast du das versucht?