delphi IdTCP上传文件


本文整理自网络,侵删。

  procedure TFrmDisMain.SpeedButton2Click(Sender: TObject);
var
SendFile:TFileStream;
TemFilePath:String;
begin
IdTCPClientSend.Host:=serverip;

if IdTCPClientSend.Connected then
IdTCPClientSend.Disconnect;

with IdTCPClientSend do
begin
Connect;//连接到服务器
Try

TemFilePath:=Edit1.Text; //文件路径
WriteLn(TemFilePath);//把保存路径和文件名发送给服务端
SendFile:=TFileStream.Create(SendName,fmOpenRead);//创建一个TFileStream,打开我们要发送的文件
WriteStream(SendFile);//使用流模式把文件发送到服务端
end;

finally
Disconnect;//断开连接
SendFile.Free;//释放流对象
end;
end;
end;

procedure TFormServer.IdTCPServerSendExecute(AThread: TIdPeerThread);
var
RecevFileName:string;
ReadFile:TMemoryStream;
begin
with AThread.Connection do
begin
while Connected do
begin
ReadFile:=TMemoryStream.Create;//创建一个TMemoryStram对象
try
RecevFileName:=ReadLn;//从客户端获得路径和文件名
ReadStream(ReadFile,-1,True);//以流模式从客户端获得文件内容,参数分别是ReadFile表示流对象,-1表示一直读取直到对方断开,True表示在NT操作系统下提高性能,对9x无效
ReadFile.Seek(0,soFromBeginning);//定位流指针到开始
ReadFile.SaveToFile(ExtractFilePath+ExtractFileName(RecevFileName));//把流中的内容保存到文件中去
finally
Disconnect;//断开连接
ReadFile.Free;//释放流对象
end;
end;
end;
end;

相关阅读 >>

Delphi 正则表达式tperlregex 类的属性与方法

Delphi 10.4改进 内联变量声明

Delphi 在线程中运行窗体

Delphi getmem(mystring,1024);//开辟1024个字节freemem(mystring,1024);//释放

Delphi判断字符是否是汉字

Delphi 提升权限查找进程关闭进程单元

Delphi tdictionary 泛型如何排序

Delphi xe 使用asqlite操作sqlite数据库乱码

Delphi getprocesshandleasname 获取进程句柄

Delphi rest客户端程序

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...