Nja, was für Protokolle du nutzt .... da hast'e die Qual der Wahl.
Bei uns läuft es über DataSnap (mit entsprechenden Methoden, z.B. ReadFile, WriteFile usw.), wo die ServerMethoden das als TStream (TFileStream/TMemoryStream) im Result zurückliefern.
Ähnlich DataSnap gibt es auch andere Frameworks, wo man "Funktionen" aufrufen kann und sich das Framework um alles kümmert. (z.B.
mORMot wird hier immer beworben)
Oder ein REST-Server, weil ist hipp, cool und machen alle so (z.B. ID rein und Base64-kodiert im JSON die Datei zurück)
Hatte ich jetzt bei uns im DataSnap nachgerüstet, also zusätzlich REST als Protokoll für den Funktionsaufruf, damit auch unsere WebAnwendung auf Dateien zugreifen kann,
aber da geht auch jede andere REST-Implementation. (bei uns einfach auf's DataSnap drauf, um im Server das nur einmal implementiert zu haben, aber mit zwei Schnittstellen nach außen)
Oder ein richtiges FileProtokol, wie
FTP (TIdFTPServer), WebDAV oder Dergleichen.
Das kann im Server auch "virtuell" sein und muß nicht direkt auf ein Verzeichnis gehn. Im "Pfad" steht dann quasi die ID/Dateiname/Sonstwas, um die entsprechende Datei/Daten von irgendwo zu holen.
Auch ein HTTP-Server (TIdHTTPServer) wäre möglich, ähnlich dem
FTP. (Pfad -> Datei)
Oder ganz billig
TCP/
IP (TIdTCPServer), aber hier ist alles "ein" Stream und du mußt dich dann selber um alles kümmern
(Authentifizierung, Behandlung der Daten im IN/OUT-Stream, also ID/Pfad übergeben und Dateihinhalt zurück, usw.),
also deine Daten entsprechend zu kodieren und drüben wieder einzulesen und womöglich während einer Anfrage mehrer Dateien übertragen.
(man könnte aber auch nach jeder Übertragung die Verbindung trennen)
Oder ...
Aber wenn man ein "ordentliches" Framework genutzt wird, dann nimmt es dir erstmal viel Arbeit ab, und du hast später auch die Möglichkeit das für andere/weitere Dinge zu nutzen, und nicht nur für Dateien.
Ob Rechner/Server, VM, Docker oder sonstwo, ist egal. Dein Server wird einfach nur mit der entsprechenden
IP oder "ComputerNamen" angesprochen.