如何把FTP上传这个事件写在线程里?如果一次传多个文件怎么办? ( 积分: 44 )

  • 主题发起人 主题发起人 bbcock
  • 开始时间 开始时间
B

bbcock

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把FTP上传这个事件写在线程里?如果一次传多个文件怎么办?
这个上传用的是WIN32 INTERNET API
procedure TForm1.btnUploadClick(Sender: TObject);
var
RemoteFile: String ;
LocalFile: String ;
sFile: String ;
FTPPath: String ;
i: integer ;
blnReturn: boolean ;
dwInternetFlags: DWORD ;
begin
if (hConnect <> nil) then
begin
FTPPath := GetFTPDirectory(hConnect) ;
SFILE(要上传的文件名)
LocalFile := localDir + sFile ;
RemoteFile := FTPPath + sFile ;
StatusBar1.Panels[0].Text := 'Uploading' ;
blnReturn := FtpPutFile(hConnect,
pchar(LocalFile),
pchar(RemoteFile),
dwInternetFlags,
$0) ;
end ;
end ;
end;
 
如何把FTP上传这个事件写在线程里?如果一次传多个文件怎么办?
这个上传用的是WIN32 INTERNET API
procedure TForm1.btnUploadClick(Sender: TObject);
var
RemoteFile: String ;
LocalFile: String ;
sFile: String ;
FTPPath: String ;
i: integer ;
blnReturn: boolean ;
dwInternetFlags: DWORD ;
begin
if (hConnect <> nil) then
begin
FTPPath := GetFTPDirectory(hConnect) ;
SFILE(要上传的文件名)
LocalFile := localDir + sFile ;
RemoteFile := FTPPath + sFile ;
StatusBar1.Panels[0].Text := 'Uploading' ;
blnReturn := FtpPutFile(hConnect,
pchar(LocalFile),
pchar(RemoteFile),
dwInternetFlags,
$0) ;
end ;
end ;
end;
 
找些多线程的例子看看,
重载改为线程的execute方法,注意同步控制,
在execute方法,可考虑用Delphi自带的FTP控件,设置好属性,
进行下载,
当然,你可能需要根据文件大小确定如何分割给各各线程,
如此,如此....
 
我说的多线程是指用indy下载大文件时,界面能响应消息,下载开一个线程就行了
关键是indy下载问题比较多,下载大文件时停都停不了
 
多人接受答案了。
 
有谁知道怎么用INDY多线程下载文件,下载大文件时界面要能响应消息,如退出下载等。
 
后退
顶部