我是新的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塊 –