服务器端将收到的文件流重组以后通过Delphi组件SaveDialog设置保存路径并保存到本地文件夹,其源代码如下: paper51.com
http://www.paper51.com
Procedure tform1.UMRcvfile(var msg:tmessage); //保存文件 内容来自论文无忧网 www.paper51.com var filename:pchar; 内容来自www.paper51.com
begin http://www.paper51.com filename:=pchar(msg.WParam); savedialog1.FileName:=string(filename); //保存文件名 内容来自www.paper51.com if savedialog1.Execute then http://www.paper51.com move (SaveDialog1.filename[1],filename^,length(SaveDialog1.FileName); 内容来自论文无忧网 www.paper51.com end; http://www.paper51.com 4.3.3 局域网内文件夹传输 内容来自论文无忧网 www.paper51.com 在人们的日常生活中,很多时候不仅仅需要进行单个文件的共享,而是需要进成百上千个文件组成的文件夹的共享。但是用户不可能进行一次又一次的单文件的传送,不但浪费时间,而且很不值得。所以这个时候我们需要对整个文件夹都进行传输。这样就可以避免一个文件夹中的大量文件重复进行多次单文件的传输,很大程度上减少了用户的工作量,从而有效地提高工作效率。其过程同样的分为服务器与客户口端两部分:首先是客户口端向服务器发送连接请求,服务器响应后建立连接实现文件传输。具体过程如下: paper51.com
1)客户端请求建立连接并发送文件夹 copyright paper51.com
用户选择文件夹接收者后点击“文件夹传输”按钮。如果用户忘记选择文件接收者,系统弹出提示框“请选择消息接收者”,然后打开本地文件路径,并将本地文件夹路径得出来。 内容来自www.paper51.com 内容来自www.paper51.com procedure TForm1.Bitbtn3Click(Sender: TObject); 内容来自www.paper51.com var dir:string; 内容来自论文无忧网 www.paper51.com tempItem:TListItem; http://www.paper51.com
Rdir:stringarray; 内容来自www.paper51.com i:integer; paper51.com begin paper51.com POSI:=0; 内容来自www.paper51.com tempItem:=UserList.Selected; copyright paper51.com if (not assigned(tempItem)) or (tempItem=nil) then 内容来自论文无忧网 www.paper51.com begin 内容来自论文无忧网 www.paper51.com MessageBox(self.Handle ,'请选择消息接收者!','提示',0); paper51.com exit; paper51.com end; http://www.paper51.com
toip:=trim(tempitem.SubItems.Strings[1]); 内容来自www.paper51.com
Dir := ''; copyright paper51.com copyright paper51.com 内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com http://www.paper51.com if SelectDirectory('目录文件夹','我的电脑',Dir)=true then paper51.com begin 内容来自www.paper51.com
rdir:=split(dir,'\'); paper51.com remotefilename:=''; 内容来自www.paper51.com
for i:=0 to high(rdir)-1 do paper51.com begin copyright paper51.com remotefilename:=remotefilename+rdir[i]; //E:\due\why\ee.txt http://www.paper51.com
remotefilename:=remotefilename+'\'; paper51.com
end; paper51.com dir:=dir+'\'; paper51.com tsendfilethread.createThread(toip,dir); copyright paper51.com
end; 内容来自www.paper51.com end; copyright paper51.com 文件夹选取以后调用tsendfilethread.createThread(toip,dir)建立文件夹传输流,其源代码如下: 内容来自论文无忧网 www.paper51.com
http://www.paper51.com
constructor TsendFilethread.createThread(IP:string;localdir:string); 内容来自论文无忧网 www.paper51.com begin 内容来自www.paper51.com FIP:=IP; paper51.com Flocaldir:=localdir; paper51.com
// Fremotename:=remotename; http://www.paper51.com // Fcount:=count; 内容来自论文无忧网 www.paper51.com freeonterminate:=true; http://www.paper51.com inherited create(false); 内容来自www.paper51.com
end; copyright paper51.com |