delphi - Indy FTP 客户端在尝试开始另一个上传后出现错误?

标签 delphi indy indy10

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/

相关文章:

delphi - 在 IdHTTPServer 中动态更改 SSL 证书

delphi - 在delphi中建立tcp ip连接时无法读取消息

delphi - 使用 Delphi 的 TAPI 调用电话

facebook - 使用 Indy 登录 facebook

delphi - IdSMTP(独立组件)SSL 在 smtp.live.com 上不可用

delphi - idHttpServer 上的 OnDisconnect 事件

delphi - 如何使用indy 10和delphi 7接收带有文件附件的电子邮件?

delphi - EIdOSSLUnderlyingCryptoError 异常

delphi - DAX错误:访问冲突读取地址00000000

arrays - Delphi - 隐式类型转换运算符不适用于方法参数