小编Hol*_*een的帖子

“连接正常关闭。” IndyFtp“PUT”命令之后(Delphi-Indy FTP)

我正在使用 Indy'sTIdFTP通过 FTP 从 Delphi 应用程序将压缩文件发送到服务器。该应用程序在数百台客户的计算机上使用。三个客户面临着同样的问题。执行命令后Put(),在 100% 传输的文件上传结束时,会出现“连接正常关闭”错误,并且上传的文件已损坏。

当从服务器下载 zip 文件并尝试打开它时,Winrar 说:

存档意外结束

附加信息:

  • 我开发了另一个测试应用程序来调试该问题。该错误发生在大小超过 300MB 的文件上。我测试上传文件从2MB到140MB没有问题。
  • 我在同一个局域网的另一台电脑上测试,结果是一样的。所以看来问题与调制解调器或互联网基础设施有关。计算机或调制解调器上没有活动防火墙,我在每台计算机上的调制解调器和 Windows 中禁用了防火墙。

源代码如下:

IdFTP1.Connect;
IdFTP1.TransferType := ftBinary;
IdFTP1.Put(strFileName);
IdFTP1.Disconnect;
Run Code Online (Sandbox Code Playgroud)

该错误发生在第三条语句上,并且它阻止与服务器断开连接。


附加说明:

正如雷米所说,我改变了一些东西,但结果是一样的。

  • NATKeepAlive通过如图所示的参数激活:

图像

我添加了finallyandexcept块,所以代码如下所示:

IdFTP1.Connect;
IdFTP1.TransferType := ftBinary;
try//finally
  try//except
    IdFTP1.Put(strFileName);
  except
  end;
finally
  IdFTP1.Disconnect;
end;
Run Code Online (Sandbox Code Playgroud)

更改后,程序执行Disconnect()命令,但上传的文件已损坏。当我想打开上传的 zip 文件时,Winrar 仍然显示“存档意外结束”,如下图所示:

图像

我启用了TIdLogFile我的TIdFTP连接。对一个小文件(14MB)和一个大文件(350MB)测试程序两次。上传的小文件工作正常,但上传的大文件已损坏。调试日志结果如下图:

小文件的日志文件 (14MB):

Stat Connected.
Recv 03/04/2023 10:29:31: 220 ProFTPD …
Run Code Online (Sandbox Code Playgroud)

delphi ftp indy

4
推荐指数
1
解决办法
1027
查看次数

标签 统计

delphi ×1

ftp ×1

indy ×1