我是新的indy服务器,所以我努力完成这个简单的任务。我必须创建一个服务器并上传一个小文件;它的大小总是128字节。然后,当有人打开服务器的主页时,文件将自动发送。所以:德尔福indy发送客户端流
- 上传一个文件(一个是128个字节)的圆盘
- 打开如Firefox浏览器
- 键入URL(下面你可以看到,我已经设置127.0.0.1上: 798),当您按Enter键时会出现一个白页,但会出现一个对话框,要求您下载该文件。
到目前为止,我写了这个代码:
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;
这是形式:
开始为Button1
和结束是Button2
。正如你所看到的,我正在将文件加载到流中,然后在打开页面时尝试将其作为输出发送。这是做到这一点的正确方法吗?
只是一个小挑剔:如果你的组件给出有意义的名字,你就不必解释什么'Button1'等。例如。 'StartBtn'和'StopBtn'。 –
你也应该使用try-finally和/或try-catch块 –