我正在使用 Indy'sTIdFTP通过 FTP 从 Delphi 应用程序将压缩文件发送到服务器。该应用程序在数百台客户的计算机上使用。三个客户面临着同样的问题。执行命令后Put(),在 100% 传输的文件上传结束时,会出现“连接正常关闭”错误,并且上传的文件已损坏。
当从服务器下载 zip 文件并尝试打开它时,Winrar 说:
存档意外结束
附加信息:
源代码如下:
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)