delphi FTPClient 文件上传内容为空问题解决
1、检查并关闭防火墙
2、文件上传成功,但FTP服务器内的文件内容为空,如下图
代码增加一行FtpClient.Passive := True;//被动模式
代码如下(上传至FTP文件夹,支持读写同步):
FtpClient := TFTPClient.create(nil);
FtpClient.UserName := FUser;
FtpClient.PassWord := FPwd;
FtpClient.HostName := FIP;
FtpClient.Port := FPort;
FtpClient.Timeout := 20; //单位秒
cn:=FtpClient.connect;
if Not cn then
begin
Result := Fasle;
end;
try
fi := 'E:\1.csv';
if FDir<>'' then
FtpClient.HostDirName := FDir {FTP服务器路径}
else
FtpClient.HostDirName := '/';
if FtpClient.Cwd then
begin
fTmpName := StringReplace(ExtractFileName(fi),'.csv','.lock',[rfReplaceAll]);
FtpClient.HostFileName :=fTmpName;
FtpClient.LocalFileName := fi;
FtpClient.Passive := True;
FtpClient.Put;
FtpClient.Quit;
FtpClient.HostFileName := fTmpName;
FtpClient.LocalFileName := ExtractFileName(fi);
Result := FtpClient.Rename;
end
else
Result := False;
except
on e:Exception do
begin
mmo1.lines.add('SaveToFtpFile Error :'+e.Message);
Result := False;
end;
end;