gpt4 book ai didi

Delphi indy 将流发送到客户端

转载 作者:行者123 更新时间:2023-12-02 07:38:45 26 4
gpt4 key购买 nike

我是独立服务器的新手,所以我正在努力完成这个简单的任务。我必须创建一个服务器并上传一个小文件;它的大小始终为 128 字节。然后,当有人打开服务器主页时,文件会自动发送。所以:

  1. 在磁盘上上传一个文件(128 字节)
  2. 打开 Firefox 等浏览器
  3. 输入网址(在下面您可以看到我设置了 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;

这是表格:

enter image description here

开始是Button1,结束是Button2。正如您所看到的,我正在流中加载文件,然后在打开页面时尝试将其作为输出发送。这是正确的方法吗?

最佳答案

由于您是通过网络浏览器访问文件,因此应该使用 TIdHTTPServer 而不是 TIdTCPServer:

procedure TForm1.Button1Click(Sender: TObject);
begin
// IP = 127.0.0.1:798 (port is 798)
IdHTTPServer1.Active := true;
Memo1.Lines.Add('Server started at: ' + TimeToStr(Now));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdHTTPServer1.Active := false;
Memo1.Lines.Add('Server stopped at: ' + TimeToStr(Now));
end;

// TIdHTTPServer.OnCommandGet event handler...
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
if ARequestInfo.Document = '/' then
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ServeFile(AContext, 'C:\Users\defaulr.user\Desktop\datfile.pkm');
// alternatively:
// AResponseInfo.SmartServeFile(AContext, ARequestInfo, 'C:\Users\defaulr.user\Desktop\datfile.pkm');
end else
AResponseInfo.ResponseNo := 404;
end;

关于Delphi indy 将流发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com