FTP 类
CodeIgniter的FTP类允许你将本地文件传输到远程服务器上,同时可以移动、重命名和删除远程服务器上的文件。这个FTP类所包含的一个"mirror"函数允许你通过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');
传输模式包括: ascii, binary, 以及 auto (默认值)。如果使用了auto模式,将根据源文件的扩展名来自动选择传输模式。
如果下载失败返回 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();
关闭到服务器的连接。当你上传完毕时,建议使用这个函数关闭连接。