Nachdem nun der File-Upload bei mir klappt, hakt es beim File-Download.
Um den vom IdHttpServer bereitgestellten Webseiten etwas Leben und Farbe zu geben, sind Grafiken unumgänglich.
Das einbauen über <img src="123.jpg"> klappt, das Bild wird auch beim Seitenaufbau vom Server abgerufen und auf der Festplatte gefunden, das habe ich überprüft.
Bereitgestellt wird es im TIdHttpServer.CommandGet, so wie alle anderen Dokumente auch, mit folgendem Code:
Delphi-Quellcode:
AResponseInfo.ContentType:=GetMIMETyp(config.Pfade.Bilder+filename);
fs:=TFileStream.Create(config.Pfade.BilderKrankmeldungen+filename, fmOpenRead or fmShareDenyWrite);
AResponseInfo.ContentLength:=fs.Size;
AResponseInfo.ResponseNo:=200;
AResponseInfo.ContentStream:=fs;
Schaut auch alles soweit gut aus. Der Stream wird geöffnet, fs.Size passt auch, und Mime-Type wird auch korrekt gesetzt.
Aber: Der Browser stellt nur ein "broken"-Pic das. Wenn ich dann mit F12 in die Console von Chrome schaue, steht dort "ERR_CONTENT_LENGTH_MISMATCH".
Firefox stellt ebenfalls das Bild nicht dar. In der Konsole finde ich aber beim Download des Bildes:
Code:
GEThttp://127.0.0.1/%7B5064AB5F-5248-471D-B07E-523E990E6413%7D_Jaco%20Krause20190718_0.jpg
[HTTP/1.1 200 OK 11369ms]
Angefragte Adresse:http://127.0.0.1/%7B5064AB5F-5248-471D-B07E-523E990E6413%7D_XXX%2YYYY20190718_0.jpg
Anfragemethode:GET
Externe Adresse:127.0.0.1:80
Status-Code:
200
Version:HTTP/1.1
Antwortkopfzeilen (126 B)
Kopfzeilen (unformatiert)
HTTP/1.1 200 OK
Connection: close
Content-Type: image/pjpeg
Content-Length: 617907
Date: Thu, 18 Jul 2019 17:01:33 GMT
Anfragekopfzeilen (400 B)
Kopfzeilen (unformatiert)
Accept
image/webp,*/*
Accept-Encoding
gzip, deflate
Accept-Language
de,en-US;q=0.7,en;q=0.3
Connection
keep-alive
Cookie
IDHTTPSESSIONID=TrOIAoyBthltjE8
Host
127.0.0.1
Referer
http://127.0.0.1/showbild.php
User-Agent
Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/68.0
In der Netzwerkanalyse von Firefox wird jedoch bei dem Bild als Übertragungsmenge 3,09 kB angezeigt.
Hat einer eine Idee, wo mein Fehler liegen könnte? Ist das so, wie ich es oben mach (senden des Bildes), korrekt?