首页 文章

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

提问于
浏览
2

我无法连接到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

    给定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;
    
  • 3
    ftp.passive := True
    

    是答案 . Thansk到Rufo爵士 .

相关问题