Je suis nouveau avec les serveurs indy et donc je me bats pour cette tâche simple. Je dois créer un serveur et télécharger un petit fichier; sa taille est toujours de 128 octets. Puis, quand quelqu'un ouvre la page d'accueil du serveur, le fichier est envoyé automatiquement. Alors:Delphi indy envoyer un flux au client
- Télécharger un fichier (celui qui est de 128 octets) sur le disque
- Ouvrez un navigateur comme Firefox
- Tapez l'URL (ci-dessous vous pouvez voir que j'ai mis 127.0.0.1: 798) et lorsque vous appuyez sur Entrée, une page blanche s'affiche, mais une boîte de dialogue vous invite à télécharger le fichier.
J'ai écrit ce code jusqu'à présent:
procedure TForm1.Button1Click(Sender: TObject);
begin
// IP = 127.0.0.1:798 (port is 798)
IdTCPServer1.Active := true;
Memo1.Lines.Add('Server started at: ' + TimeToStr(Now) + slinebreak);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
IdTCPServer1.Active := false;
Memo1.Lines.Add('Server stopped at: ' + TimeToStr(Now));
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var a: TFileStream;
begin
a := TFileStream.Create('C:\Users\defaulr.user\Desktop\datfile.pkm', fmOpenWrite);
AContext.Connection.IOHandler.Write(a);
end;
C'est la forme:
Start est Button1
et End est Button2
. Comme vous pouvez le voir, je charge le fichier dans un flux, puis j'essaie de l'envoyer en sortie lorsque j'ouvre la page. Est-ce la bonne façon de le faire?
Juste un nitpick mineur: si vous donner des noms significatifs aux composants, vous auriez pas à expliquer ce que sont Button1, etc. Par exemple. 'StartBtn' et' StopBtn'. –
Et vous devriez aussi utiliser try-finally et/ou try-catch blocks –