FTP 類
CodeIgniter的FTP類允許你將本地文件傳輸?shù)竭h(yuǎn)程服務(wù)器上,同時(shí)可以移動(dòng)、重命名和刪除遠(yuǎn)程服務(wù)器上的文件。這個(gè)FTP類所包含的一個(gè)"mirroring"函數(shù)允許你通過(guò)FTP在遠(yuǎn)程服務(wù)器上創(chuàng)建一個(gè)本地文件夾的鏡像。
注意:?不支持 SFTP 和 SSL FTP 協(xié)議, 僅支持標(biāo)準(zhǔn) FTP 協(xié)議.
初始化類
像大多數(shù)其他CodeIgniter 類一樣,F(xiàn)TP 類在控制器里使用$this->load->library 函數(shù)來(lái)初始化:
$this->load->library('ftp');
一旦加載, FTP對(duì)象就可以使用: $this->ftp
使用例子
在這個(gè)例子中,首先建立一個(gè)到FTP服務(wù)器的連接,接著讀取一個(gè)本地文件然后以ASCII模式上傳。文件的權(quán)限被設(shè)置為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服務(wù)器上獲得了文件列表
$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服務(wù)器上創(chuàng)建了一個(gè)本地文件夾的鏡像。
$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();
函數(shù)參考
$this->ftp->connect()
連接并登錄到FTP服務(wù)器,通過(guò)向函數(shù)傳遞一個(gè)數(shù)組來(lái)設(shè)置連接參數(shù),或者你可以把這些參數(shù)保存在一個(gè)配置文件中。
下面例子演示了如何手動(dòng)設(shè)置參數(shù):
$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);
在配置文件中設(shè)置參數(shù)
如果你更傾向把FTP參數(shù)設(shè)置保存在一個(gè)配置文件中,只需創(chuàng)建一個(gè)名為ftp.php的文件, 把 $config 數(shù)組添加到該文件中,然后保存成config/ftp.php 它就會(huì)自動(dòng)被讀取。
可用連接選項(xiàng):
- hostname - FTP主機(jī)名。 通??雌饋?lái)是這樣的:? ftp.example.com
- username - FTP用戶名。
- password - FTP密碼。
- port - 端口號(hào)。 默認(rèn)設(shè)置為21
- debug - TRUE/FALSE (布爾值). 是否開(kāi)啟調(diào)試顯示錯(cuò)誤信息。
- passive - TRUE/FALSE (布爾值). 是否使用被動(dòng)模式,默認(rèn)設(shè)置為被動(dòng)模式。
$this->ftp->upload()
將一個(gè)文件上傳到你的服務(wù)器上。本地路徑和遠(yuǎn)程路徑這兩個(gè)參數(shù)是必需的,而傳輸模式和權(quán)限設(shè)置這兩個(gè)參數(shù)則是可選的。例如:
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
傳輸模式包括:? ascii, binary, 以及 auto (默認(rèn)值)。如果使用了auto模式,將根據(jù)源文件的擴(kuò)展名來(lái)自動(dòng)選擇傳輸模式。
設(shè)置權(quán)限,你可以將一個(gè)octal (八進(jìn)制)的權(quán)限值通過(guò)第四個(gè)參數(shù)傳遞過(guò)去。
$this->ftp->download()
從你的服務(wù)器下載文件。你必須提供遠(yuǎn)程路徑和本地路徑,設(shè)置什么模式是可選的。例:
$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 沒(méi)有寫(xiě)入文件的權(quán)限的情況)
$this->ftp->rename()
作用是給一個(gè)文件重命名。請(qǐng)給出原文件名/路徑和新的文件名/路徑。
// 將文件 green.html 重命名為 blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
$this->ftp->move()
作用是移動(dòng)一個(gè)文件。請(qǐng)給出源路徑和目標(biāo)路徑:
// 將文件 blog.html 從 "joe" 移動(dòng)到 "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
說(shuō)明: 如果源文件名與目標(biāo)文件名不同,文件將會(huì)被重命名。
$this->ftp->delete_file()
作用是刪除一個(gè)文件。請(qǐng)給出源文件名和所在路徑。
$this->ftp->delete_file('/public_html/joe/blog.html');
$this->ftp->delete_dir()
作用是刪除一個(gè)目錄以及此目錄下的全部?jī)?nèi)容。請(qǐng)給出原目錄的路徑,并以斜線結(jié)束。
重要提示? 請(qǐng) 非常謹(jǐn)慎 地使用這個(gè)函數(shù)。它將刪除你給出的目錄下的 所有內(nèi)容,也就是說(shuō)此目錄下的所有子目錄以及所有文件都會(huì)被刪除。請(qǐng)確保你給出的路徑是絕對(duì)正確的。可以先試著使用 list_files() 函數(shù)來(lái)驗(yàn)證你的路徑是否正確。
$this->ftp->delete_dir('/public_html/path/to/folder/');
$this->ftp->list_files()
允許你檢索你服務(wù)器上所有文件的列表,以數(shù)組的形式返回檢索結(jié)果。你必須給出要檢索的路徑。
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->mirror()
檢索一個(gè)本地目錄下的所有內(nèi)容(包括子目錄和所有文件),并通過(guò)FTP為這個(gè)目錄創(chuàng)建一份鏡像。源路徑下的任何結(jié)構(gòu)都會(huì)被創(chuàng)建到服務(wù)器上。你必須給出源路徑和目標(biāo)路徑:
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->mkdir()
允許你在服務(wù)器上創(chuàng)建一個(gè)目錄。請(qǐng)給出你想要?jiǎng)?chuàng)建的目錄的完整路徑,截止到你要?jiǎng)?chuàng)建的目錄名,并在末尾添加斜線結(jié)束。你還可以在第二個(gè)參數(shù)中傳遞一個(gè)八進(jìn)制的權(quán)限值。
// 創(chuàng)建一個(gè)名為"bar"的目錄
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);
$this->ftp->chmod()
允許你設(shè)置文件權(quán)限。請(qǐng)給出你要設(shè)置的文件或者目錄所在的路徑:
// 將 "bar" 的權(quán)限設(shè)置為 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);
$this->ftp->close();
關(guān)閉到服務(wù)器的連接。當(dāng)你上傳完畢時(shí),建議使用這個(gè)函數(shù)關(guān)閉連接。
?