Bugfix HTTPSRV: Kein Charset für Mediendateien

Begonnen von KyleK, 06 September 2026, 16:46:58

Vorheriges Thema - Nächstes Thema

KyleK

Hallo,

ich benutze ein TRMNL-Display, und wollte via FHEM + HTTPSRV .png-Dateien für das Display bereitstellen.
Leider wurden die Dateien nie angezeigt.
Ich habe jetzt den Grund gefunden:

HTTPSRV sendet als Content-Type:
Content-Type: image/png; charset=utf-8
Die Browser kommen damit klar, und andere Geräte vielleicht auch, aber TRMNL hat damit ein Problem. Charset ergibt bei Medientypen keinen wirklichen Sinn.

Ich habe meine lokale 02_HTTPSRV.pm angepasst:
--- 02_HTTPSRV.pm.org 2026-09-06 16:44:20.600686186 +0200
+++ 02_HTTPSRV.pm 2026-09-06 16:31:54.459730714 +0200
@@ -174,6 +174,14 @@
     $filename= AttrVal($name,"directoryindex","index.html") unless($filename);
     $filename =~ s/\?.*//;
     my $MIMEtype= filename2MIMEType($filename);
+
+    # Add charset only for text/* or application/json, xml, etc.
+    my $header;
+    if ($MIMEtype =~ m!^(text/|application/(json|xml))!) {
+        $header = "$MIMEtype; charset=utf-8";
+    } else {
+        $header = $MIMEtype;
+    }
     my $directory= $defs{$name}{fhem}{directory};
     $filename= "$directory/$filename";
     #Debug "read filename= $filename";
@@ -182,7 +190,7 @@
       binmode(INPUTFILE);
       @contents= <INPUTFILE>;
       close(INPUTFILE);
-      return("$MIMEtype; charset=utf-8", join("", @contents));
+      return($header, join("", @contents));
     } else {
       return("text/plain; charset=utf-8", "File not found: $filename");
     }

Damit werden die PNGs jetzt auch korrekt auf meinem Display angezeigt.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

betateilchen

Es gibt noch jede Menge anderer Content-Types, die das charset u.U. benötigen.

Vielleicht sollte man die Logik umdrehen und für (audio|image|video)/... das charset weglassen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!