delphi 启动http文件服务器
时间: 2023-05-11 10:00:24 浏览: 90
Delphi 是一种常用的编程语言,我们可以使用 Delphi 编写一个简单的 HTTP 文件服务器。首先,我们需要设置一个端口用于文件服务器的监听,通常 HTTP 的默认端口为 80,但是可能被其他应用程序占用,因此我们可以选择一个未被占用的端口(例如 8080),接下来,我们需要编写代码启动文件服务器。以下是示例代码:
```
uses IdHTTPServer, IdCustomHTTPServer, IdGlobal, IdContext, System.Classes;
type
TMyServer = class(TIdHTTPServer)
protected
procedure DoCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo); override;
end;
var
MyServer: TMyServer;
procedure TMyServer.DoCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo);
var
FileName: string;
begin
inherited;
FileName := ExtractFileName(ARequestInfo.Document);
// set the content type based on the file extension
if SameText(ExtractFileExt(FileName), '.html') then
AResponseInfo.ContentType := 'text/html'
else if SameText(ExtractFileExt(FileName), '.css') then
AResponseInfo.ContentType := 'text/css'
else if SameText(ExtractFileExt(FileName), '.js') then
AResponseInfo.ContentType := 'application/javascript'
else
AResponseInfo.ContentType := 'text/plain';
AResponseInfo.ContentStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
end;
begin
MyServer := TMyServer.Create(nil);
try
MyServer.DefaultPort := 8080;
MyServer.Active := True;
WriteLn('Server is running...');
ReadLn;
finally
MyServer.Free;
end;
end.
```
在这个示例中,我们定义了一个名为 TMyServer 的类,并在其中实现了 DoCommandGet 方法来处理 HTTP GET 请求。我们根据请求的文件类型设置 Content-Type,并使用 TFileStream 加载该文件的内容并发送给客户端。在主函数中,我们创建了一个 TMyServer 对象并设置默认端口为 8080,然后启动该服务器并等待用户输入来停止服务器。