IdFTP: TIdFTP;
...
procedure TForm1.IdFTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
IdFTP.Disconnect;
try
IdFTP.Connect;
IdFTP.ChangeDir( directory );
IdFTP.Put( fileName, ExtractFileName( fileName ) );
except
end;
end;
这是大部分代码。 我希望当第 1 个上传完成后开始另一个上传,但是这段代码似乎出现了错误 10048。
- 将文件和命令序列上传到服务器的方法是否正确?
- 为什么会出现此错误 10048,以及如何修复它?
最佳答案
请勿使用 OnWork...
事件来驱动您的业务逻辑!它们仅用于地位。在大多数情况下,Indy 不是事件驱动的,除了一些异常(exception)。
在这种情况下,OnWorkEnd
在原始文件数据传输后但在服务器对上传的响应已收到并处理之前触发。上传另一个文件的正确方法是在上次调用 Put()
退出后再次调用 Put()
,例如:
procedure TForm1.UploadFiles;
begin
try
IdFTP.Connect;
try
while (there is a file to upload) do
begin
if (directory is different than current) then
IdFTP.ChangeDir(directory);
IdFTP.Put(fileName, ExtractFileName(fileName));
end;
finally
IdFTP.Disconnect;
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
end;
关于delphi - Indy FTP 客户端在尝试开始另一个上传后出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103468/