如何使用ftp:// userName @ host连接到FTP

时间:2015-09-11 11:39:00

标签: delphi ftp

我无法连接到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服务器,但不能将任何文件放在那里。 提前谢谢。

2 个答案:

答案 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爵士。