AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Große Datei über WebBroker als 'application/octet-stream' zur Verfügung stellen
Thema durchsuchen
Ansicht
Themen-Optionen

Große Datei über WebBroker als 'application/octet-stream' zur Verfügung stellen

Ein Thema von fisipjm · begonnen am 4. Apr 2024 · letzter Beitrag vom 10. Apr 2024
 
fisipjm
Online

Registriert seit: 28. Okt 2013
345 Beiträge
 
Delphi 12 Athens
 
#6

AW: Große Datei über WebBroker als 'application/octet-stream' zur Verfügung stellen

  Alt 10. Apr 2024, 15:22

Falls ich perfmon vertrauen kann, dann ist es mit TfileStream (erwartet) nicht so. Ich hab's nun auch überprüft: Setze in Web.HttpApp bei procedure TWebResponse.SendStream(AStream: TStream); einen Breakpoint, dann siehst du wie Buffer für Buffer (1MB) gesendet wird und so der Arbeitsspeicher vom Server nicht überlastet wird.

Also so:
Delphi-Quellcode:
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
    fn : string;
    tf : tfileStream;

begin
  fn := 'C:\inetpub\wwwroot\test.bin';
  Response.Content := '';
  Response.ContentType := 'application/octet-stream';
  Response.CustomHeaders.Values['Content-Disposition'] := 'attachment; filename=test.bin';
  tf := tfilestream.Create( fn, fmopenread or fmShareDenyWrite );
  Response.ContentStream := tf;
  handled := true;
end;
Ich setze hier zusätzlich auch noch den gewünschten Filenamen (muss natürlich nicht dem Filenamen auf dem Server entsprechen).
Hi Michael,
danke für deine Hilfe! Ich habe jetzt mal deinen Code getestet, gleiches Verhalten. Wie bist du in das SendStream rein gekommen? Ich habe hier lediglich ein procedure SendResponse; virtual; abstract; bzw ein procedure SendStream(AStream: TStream); virtual; abstract; . Leider nur die deklaration und keine Implementierung in der Web.HTTPApp.

Ich habe mir auch in dem WEbmodul einen Pfad definiert, mache es also nicht im BeforeDispatch, aber das sollte ja eigentlich nicht stören oder?
vG
PJM
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz