Title: Send binary data from a CGI application
Question: Set the default file name for saving the data provided as 'response'.
Answer:
It is pretty easy to return any kind of data inside a Delphi CGI Application.
But sometimes the data has to be saved under a certain filename, such as "Test.ZIP". To do this you need to add the HTTP header item
"Content-Disposition".
To do it in Delphi use the CustomHeaders property.
To this TStrings property you can add items in the syntax "name=value"
- surprisingly the HTTP syntax name:value is not used here.
Example:
procedure TWebModule1.WebModule1CHECKSTATUSAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var s : TFileStream;
begin
s := nil;
if request.query='download' then
try
response.Title := 'Download Test.ZIP';
response.CustomHeaders.Add('Content-Disposition=filename=Test.zip');
response.ContentType := 'application/zip';
s := TFileStream.Create(fmOpenRead+fmShareDenyNone,'Test.zip');
response.contentstream := s;
response.sendresponse;
finally
s.Free;
end;
end;
INFO:
You will find powerful wordprocessing and PDF creation components at the website www.WPTOOLS.com. Have fun!