Ich bin mal so frei, die "Lösung" hier zum Besten zu geben:
Und zwar kann man mit
SOAP nur strukturierte Daten senden, Binärdaten nicht.
D.h. nachdem man die Datei in einen Stream geladen hat, kann man diesen nicht direkt verschicken, sondern muss ihn zunächst in einen Base64String umwandeln. Dieser String kann dann als Übergabeparameter für eine auf dem Server deklarierte (und über
wsdl-Datei dem Client zur Verfügung gestellte) function/procedure übergeben werden. Da diese function/procedure auf dem Server ausgeführt wird, kann man dort eine TMemoryString-Variable einführen (das geht nämlich, nur als Übergabeparameter geht es nicht) und unter Verwendung anderer Funktionen den Base64String umwandeln und den MemoryStream schließlich als Datei abspeichern.
Delphi-Quellcode:
procedure TTestService.FileReceiver(s:string); stdcall;
var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
ms:=Base64toStream(s);
ms.SaveToFile(..);
end;