Bei TFPHttpServer Downloaddatei neuen Namen geben?

Alle Fragen zur Netzwerkkommunikation
Antworten
Soner
Beiträge: 790
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Bei TFPHttpServer Downloaddatei neuen Namen geben?

Beitrag von Soner »

Ich habe eine TFPHttpServer, damit kann man von einer Datenbank PDF-Dateien herunterladen. Der Link sieht so aus:
http://localhost/redownld?renr=1234567.

Der Browser speichert es immer als redownld.pdf. Ich möchte es aber anders benennen, mit Rechnungsnummer usw., kann der Browser bei Response es mitteilen, in dieser Prozedur behandele ich "Requests":

Code: Alles auswählen

procedure TTestHTTPServer.HandleRequest(var ARequest: TFPHTTPConnectionRequest; var AResponse: TFPHTTPConnectionResponse);
begin
end;
Ich kann Beispiel hinzufügen, aber ich dachte irgend jemand kennt das vielleicht schon. Vielleicht muss man bei Response zu HTTP-Header irgendetwas hinzufügen.

Benutzeravatar
theo
Beiträge: 11291
Registriert: Mo 11. Sep 2006, 19:01

Re: Bei TFPHttpServer Downloaddatei neuen Namen geben?

Beitrag von theo »

Da muss du wahrscheinlich einen Antwort Header hinzufügen.
Z.B.
Content-Disposition: attachment; filename="downloaded.csv"

Google kennt bestimmt die Details.

Soner
Beiträge: 790
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Bei TFPHttpServer Downloaddatei neuen Namen geben?

Beitrag von Soner »

@theo
Es hat geklappt, vielen Dank.

Falls jemand gleiche Frage hat, ich habe das gemacht:

Code: Alles auswählen

procedure TTestHTTPServer.HandleRequest(var ARequest: TFPHTTPConnectionRequest; var AResponse: TFPHTTPConnectionResponse);
begin
  //..dein code
  AResponse.SetFieldByName('Content-Disposition','attachment; filename="RExyz.pdf"');
  //..dein code
end;
Laut MDN kann man noch mehr sachen machen.

Antworten