Registriert seit: 11. Okt 2003
Ort: Elbflorenz
41.417 Beiträge
Delphi 11 Alexandria
|
AW: Multipart/form-data im Datasnap REST Server Apache Link Module
22. Apr 2020, 09:28
Du kannst direkt einen TStream als Parameter oder Result einer DataSnap-Methode verwenden.
Aber Achtung, ab etwa 32 KB (über einer Blockgröße im Übertragungsweg) wird der Stream nicht sofort/direkt übertragen und weil da am Ziel eine spezielle TStream-Instanz ankommt, wo Size = -1 ist, kommen z.B. viele LoadFromStream-Funktionen nicht damit klar, welche vorm/beim Lesen auf die Size gucken.
Wir/Ich hatte daher das generierte DataSnap-Zeug nochmal bissl erweitert und kopiere beim Empfang (Server und Client) nochmal in einen eigenen TMemoryStream um.
Grund:
* entwededer ist Size >= 0, dann kann diese Instanz wie ein normaler TMemoryStream verwendet werden
* und bei Size < 0 muß man so lange Stream.Read machen, bis dort Result=0 sagt, dann ist man am Ende
** während dem Lesen wird dann vom DataSnap auch der Rest der Daten übertragen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
Geändert von himitsu (22. Apr 2020 um 09:35 Uhr)
|