从远程FTP下载文件列表

伊祖尔

我在使用TidFTP组件时遇到问题。

我可以使用这样的代码与服务器连接

vFileList := TStringList.Create;
oClientFTP := TidFTP.Create(nil);
oClientFTP.Port := PortFTP;
oClientFTP.Host := IPHost;
oClientFTP.UserName := UserFTP;
oClientFTP.Password := PasswordFTP;

从StringList获得多个文件(此元素正好具有778个元素)后,元素编号为0。检索到137,异常EIdAcceptTimeout引发为“ Accept timed out”。信息。

我运行的代码是这样的(顺便在线程中运行)

procedure TDownloadFTP.Get;
begin
try
  for I := 0 to vFileList .Count - 1 do
  begin
    sFileName:= vFileList [I];
    posPoint := LastDelimiter('.', sFileName);
    if posPoint = 0 then
      ForceDirectories(ExtractFilePath(Application.ExeName) + '/BackUp/' + sFileName)
    else
      try
        oClienteFTP.Get(sFileName,IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName) + '/BackUp/') + sFileName, True);
    except

      on E: EIdReplyRFCError do
      begin
      end;
      on E: Exception do
        exceptionList.Add(sFileName);
  end;
end;

例外之后,文件已正确下载,但每个文件的处理过程大约需要25秒(我正在下载2KB png图像)。

对这个Exception的含义有任何想法吗?

谢谢

汤姆·布伦伯格

搜寻EIdAcceptTimeoutIndy论坛中的讨论的线索:

TIdFTP中的UseHOST(客户端)=> EIdAcceptTimeout

雷米·勒博(Remy Lebeau)指出:

如果您将TIdFTP.Passive属性设置为False,则在数据传输期间唯一可能发生异常的情况是,该属性告诉FTP服务器建立与TIdFTP的入站连接。这些连接通常被不支持FTP的防火墙/路由器阻止。当您位于防火墙/路由器后面时,通常必须设置TIdFTP.Passive = True。

因此,解决方案可能是为您添加一行

oClientFTP.Passive := True;

顺便提一句。在代码段中,您同时拥有oClientFTP和oClienteFTP。如有需要,请调整我的建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用django从远程服务可下载文件(巨大)

来自分类Dev

每周从FTP下载文件到HDFS

来自分类Dev

在jenkins作业中通过FTP下载文件?

来自分类Dev

Jenkins插件可通过https远程下载文件

来自分类Dev

从远程FTP下载文件列表

来自分类Dev

在Android上使用FTP下载文件

来自分类Dev

可以从FTP下载文件

来自分类Dev

使用R从ftp下载文件

来自分类Dev

使用ASP MVC从远程服务器下载文件

来自分类Dev

PowerShell FTP下载文件和子文件夹

来自分类Dev

MVC从远程服务器下载文件

来自分类Dev

通过FTP NOAA下载文件

来自分类Dev

使用cURL从FTP下载文件

来自分类Dev

使用ftp下载文件

来自分类Dev

从FTP服务器下载文件时损坏文件

来自分类Dev

通过FTP下载文件失败(仅下载文件的一部分)

来自分类Dev

Servlet从远程服务器下载文件

来自分类Dev

使用ASP MVC从远程服务器下载文件

来自分类Dev

MVC从远程服务器下载文件

来自分类Dev

从FTP下载文件的奇怪字符

来自分类Dev

从url下载文件(在列表中)

来自分类Dev

如何从本地电脑下载文件到远程电脑?

来自分类Dev

Android:从 Firebase 存储下载文件列表

来自分类Dev

ftp_connect 错误(从 FTP 下载文件)

来自分类Dev

Python从FTP下载文件忽略丢失的文件

来自分类Dev

从远程下载文件并将其保存到 Android 设备

来自分类Dev

无法从 FTP 下载文件

来自分类Dev

连接到ftp并下载文件

来自分类Dev

如何根据链接列表下载文件