Утечка памяти на сервере Delphi Datasnap с использованием TFileStream в качестве возвращаемого значения

мне нужна функция в datasnap-сервере, которая возвращает файл .zip. Итак, я начал с:

function TGetData.getZip (): TFileStream;
begin
   result := TFileStream.Create('test.zip', fmOpenRead and fmShareDenyWrite);
end

Это работает нормально, но datasnap не освобождает его, поэтому я получаю ошибку утечки памяти.

Следующая попытка: я начал с "TWebModule1.WebModuleAfterDispatch". Я думал, что это может помочь отправить мой ответ с "response.SendResponse;" и освободить мой поток самостоятельно. Итак, короткая версия:

procedure TWebModule1.WebModuleAfterDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
   test : TFileStream;
begin
   response.ContentType := 'application/x-zip-compressed';
   test := TFileStream.Create('test.zip', fmOpenRead);
   response.ContentStream := test;
   response.CustomHeaders.Values['Content-Disposition'] := 'attachment; filename=test12.zip';
   response.SendResponse; //Also sendStream didn't help
   test.Free;
end;

Я думаю, что это почти решение, но datasnap-сервер отправляет html-код после того, как мой поток был отправлен, и это записывается в конце файла.

Я знаю, что datasnap-сервер поддерживает TFileStream. Вместо этого я должен использовать TDBXStreamValue, но, похоже, не работает пример ...

Есть ли у кого-нибудь опыт с такой проблемой?

Ответы на вопрос(1)

Ваш ответ на вопрос