FTP 类

CodeIgniter的FTP类允许你将本地文件传输到远程服务器上,同时可以移动、重命名和删除远程服务器上的文件。这个FTP类所包含的一个"mirror"函数允许你通过FTP在远程服务器上创建一个本地文件夹的镜像。

注意: 不支持 SFTP 和 SSL FTP 协议, 仅支持标准 FTP 协议.

初始化类

像大多数其他CodeIgniter 类一样,FTP 类在控制器里使用$this->load->library 函数来初始化:

  1. $this->load->library('ftp');

一旦加载, FTP对象就可以使用: $this->ftp

使用例子

在这个例子中,首先建立一个到FTP服务器的连接,接着读取一个本地文件然后以ASCII模式上传。文件的权限被设置为755。

  1. $this->load->library('ftp');
  2. $config['hostname'] = 'ftp.example.com';
  3. $config['username'] = 'your-username';
  4. $config['password'] = 'your-password';
  5. $config['debug'] = TRUE;
  6. $this->ftp->connect($config);
  7. $this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
  8. $this->ftp->close();

下面的例子从FTP服务器上获得了文件列表

  1. $this->load->library('ftp');
  2. $config['hostname'] = 'ftp.example.com';
  3. $config['username'] = 'your-username';
  4. $config['password'] = 'your-password';
  5. $config['debug'] = TRUE;
  6. $this->ftp->connect($config);
  7. $list = $this->ftp->list_files('/public_html/');
  8. print_r($list);
  9. $this->ftp->close();

下面的例子在FTP服务器上创建了一个本地文件夹的镜像。

  1. $this->load->library('ftp');
  2. $config['hostname'] = 'ftp.example.com';
  3. $config['username'] = 'your-username';
  4. $config['password'] = 'your-password';
  5. $config['debug'] = TRUE;
  6. $this->ftp->connect($config);
  7. $this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
  8. $this->ftp->close();

函数参考

$this->ftp->connect()

连接并登录到FTP服务器,通过向函数传递一个数组来设置连接参数,或者你可以把这些参数保存在一个配置文件中。

下面例子演示了如何手动设置参数:

  1. $this->load->library('ftp');
  2. $config['hostname'] = 'ftp.example.com';
  3. $config['username'] = 'your-username';
  4. $config['password'] = 'your-password';
  5. $config['port'] = 21;
  6. $config['passive'] = FALSE;
  7. $config['debug'] = TRUE;
  8. $this->ftp->connect($config);

在配置文件中设置参数

如果你更倾向把FTP参数设置保存在一个配置文件中,只需创建一个名为ftp.php的文件, 把 $config 数组添加到该文件中,然后保存成config/ftp.php 它就会自动被读取。

可用连接选项:

  • hostname - FTP主机名。 通常看起来是这样的: ftp.example.com
  • username - FTP用户名。
  • password - FTP密码。
  • port - 端口号。 默认设置为21
  • debug - TRUE/FALSE (布尔值). 是否开启调试显示错误信息。
  • passive - TRUE/FALSE (布尔值). 是否使用被动模式,默认设置为被动模式。

$this->ftp->upload()

将一个文件上传到你的服务器上。本地路径和远程路径这两个参数是必需的,而传输模式和权限设置这两个参数则是可选的。例如:

  1. $this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);

传输模式包括: ascii, binary, 以及 auto (默认值)。如果使用了auto模式,将根据源文件的扩展名来自动选择传输模式。

设置权限,你可以将一个octal (八进制)的权限值通过第四个参数传递过去。

$this->ftp->download()

从你的服务器下载文件。你必须提供远程路径和本地路径,设置什么模式是可选的。例:

  1. $this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');
**传输模式包括:** ascii, binary, 以及 auto (默认值)。如果使用了auto模式,将根据源文件的扩展名来自动选择传输模式。 如果下载失败返回 FALSE (包括 PHP 没有写入文件的权限的情况) ## $this->ftp->rename() 作用是给一个文件重命名。请给出原文件名/路径和新的文件名/路径。
  1. // 将文件 green.html 重命名为 blue.html
  2. $this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');

$this->ftp->move()

作用是移动一个文件。请给出源路径和目标路径:

  1. // 将文件 blog.html 从 "joe" 移动到 "fred"
  2. $this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');

说明: 如果源文件名与目标文件名不同,文件将会被重命名。

$this->ftp->delete_file()

作用是删除一个文件。请给出源文件名和所在路径。

  1. $this->ftp->delete_file('/public_html/joe/blog.html');

$this->ftp->delete_dir()

作用是删除一个目录以及此目录下的全部内容。请给出原目录的路径,并以斜线结束。

重要提示 请 非常谨慎 地使用这个函数。它将删除你给出的目录下的 所有内容,也就是说此目录下的所有子目录以及所有文件都会被删除。请确保你给出的路径是绝对正确的。可以先试着使用 list_files() 函数来验证你的路径是否正确。

  1. $this->ftp->delete_dir('/public_html/path/to/folder/');

$this->ftp->list_files()

允许你检索你服务器上所有文件的列表,以数组的形式返回检索结果。你必须给出要检索的路径。

  1. $list = $this->ftp->list_files('/public_html/');
  2. print_r($list);

$this->ftp->mirror()

检索一个本地目录下的所有内容(包括子目录和所有文件),并通过FTP为这个目录创建一份镜像。源路径下的任何结构都会被创建到服务器上。你必须给出源路径和目标路径:

  1. $this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->mkdir()

允许你在服务器上创建一个目录。请给出你想要创建的目录的完整路径,截止到你要创建的目录名,并在末尾添加斜线结束。你还可以在第二个参数中传递一个八进制的权限值。

  1. // 创建一个名为"bar"的目录
  2. $this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->chmod()

允许你设置文件权限。请给出你要设置的文件或者目录所在的路径:

  1. // 将 "bar" 的权限设置为 777
  2. $this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->close();

关闭到服务器的连接。当你上传完毕时,建议使用这个函数关闭连接。

翻译贡献者:dimitry, Hex, IT不倒翁, Jacklee, tg8866, yinzhili, yygcom