# CodeIgniter 用户指南 版本 2.2.0

编辑文档、查看近期更改请 登录 或 注册 找回密码

搜索用户指南

查看原文

# FTP 类

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

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

## 初始化类

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

`$this->load->library('ftp');`

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

## 使用例子

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

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

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

`$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->close();`

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

`$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close();`

# 函数参考

## $this->ftp->connect()

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

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

`$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port'] = 21;
$config['passive'] = FALSE;
$config['debug'] = TRUE;
$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()

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

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

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

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

## $this->ftp->download()

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

`$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');`

Mode options are: `ascii`, `binary`, and `auto` (the default). If `auto` is used it will base the mode on the file extension of the source file.

如果下载失败返回 FALSE (包括 PHP 没有写入文件的权限的情况)

## $this->ftp->rename()

作用是给一个文件重命名。请给出原文件名/路径和新的文件名/路径。

`// 将文件 green.html 重命名为 blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');`

## $this->ftp->move()

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

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

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

## $this->ftp->delete_file()

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

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

## $this->ftp->delete_dir()

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

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

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

## $this->ftp->list_files()

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

`$list = $this->ftp->list_files('/public_html/');
print_r($list);`

## $this->ftp->mirror()

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

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

## $this->ftp->mkdir()

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

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

## $this->ftp->chmod()

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

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

## $this->ftp->close();

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

翻译贡献者: dimitry, Hex, IT不倒翁, tg8866, yinzhili, yygcom
最后修改: 2012-02-06 00:44:15