我无法连接到FTP服务器。大多数时候我连接到这样的FTP服务器:
// ftp is TidFTP
ftp.Host := '119.xxx.xxx.133';
ftp.Username := 'fnc';
ftp.Password := 'fnc';
ftp.Port := 21;
ftp.ConnectTimeout := 5000;
ftp.Connect;
我们的管理员给了我一个这样的链接
ftp://fnc@119.xxx.xxx.133/Files/
访问FTP。用户名为 fnc ,端口为21,密码为 fnc 。
如果我通过Windows资源管理器访问FTP,我没有任何错误,我可以完美地放置文件。但是,如果我在代码中执行此操作,每当我尝试放置文件时,都会出现非法端口命令错误。
请注意,我可以使用上面的代码将连接连接到ftp服务器,但不能将任何文件放在那里。 提前谢谢。
答案 0 :(得分:3)
给定FTP URL,您需要解析URL并将其组件分配给各种TIdFTP
属性和方法,例如:
var
URL: string;
Uri: TIdURI;
begin
...
URL := ...; // 'ftp://fnc:fnc@119.xxx.xxx.133/Files/'
Uri := TIdURI.Create(URL);
try
ftp.Host := Uri.Host;
if Uri.Port <> '' then
ftp.Port := IntToStr(Uri.Port)
else
ftp.Port := 21;
ftp.Username := Uri.Username;
ftp.Password := Uri.Password;
ftp.ConnectTimeout := 5000;
ftp.Connect;
if Uri.Path <> '/' then
ftp.ChangeDir(Uri.Path);
...
finally
Uri.Free;
end;
...
end;
答案 1 :(得分:0)
ftp.passive := True
就是答案。 Thansk到Rufo爵士。