国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

深入PHP FTP類的詳解

2020-03-22 19:02:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
FTP是一種文件傳輸協(xié)議,它支持兩種模式,一種方式叫做Standard (也就是Active,主動(dòng)方式),一種是 Passive (也就是PASV,被動(dòng)方式)。 Standard模式 FTP 的客戶端發(fā)送 PORT 命令到FTP server。Passive模式FTP的客戶端發(fā)送 PASV命令到 FTP Server。
下面介紹一個(gè)這兩種方式的工作原理:Standard模式
FTP 客戶端首先和FTP Server的TCP 21端口建立連接,通過(guò)這個(gè)通道 發(fā)送命令,客戶端需要接收數(shù)據(jù)的時(shí)候在這個(gè)通道上發(fā)送PORT命令。 PORT命令包含 了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時(shí)候,服務(wù)器端通過(guò)自己的TCP 20端口發(fā)送數(shù)據(jù)。 FTP server必須和客戶端建立一個(gè)新的連接用來(lái)傳送數(shù)據(jù)。Passive模式
在建立控制通道的時(shí)候和Standard模式類似,當(dāng)客戶端通過(guò)這個(gè)通道發(fā)送PASV 命令的時(shí)候,F(xiàn)TP server打開一個(gè)位于1024和5000之間的隨機(jī)端口并且通知 客戶端在這個(gè)端口上傳送數(shù)據(jù)的請(qǐng)求,然后FTP server 將通過(guò)這個(gè)端口進(jìn)行數(shù)據(jù)的傳送,這個(gè)時(shí)候FTP server不再需要建立一個(gè)新的和客戶端之間的連接。
使用PHP操作FTP-用法
復(fù)制代碼 代碼如下:
?
// 聯(lián)接FTP服務(wù)器
$conn = ftp_connect(ftp.server.com);

// 使用username和password登錄
ftp_login($conn, “john”, “doe”);

// 獲取遠(yuǎn)端系統(tǒng)類型
ftp_systype($conn);

// 列示文件
$filelist = ftp_nlist($conn, “.”);

// 下載文件
ftp_get($conn, “data.zip”, “data.zip”, FTP_BINARY);

// 關(guān)閉聯(lián)接
ftp_quit($conn);

//初結(jié)化一個(gè)FTP聯(lián)接,PHP提供了ftp_connect()這個(gè)函數(shù),它使用主機(jī)名稱和端口作為參數(shù)。在上面的例子里,主機(jī)名字為 “ftp.server.com”;如果端口沒(méi)指定,PHP將會(huì)使用“21”作為缺省端口來(lái)建立聯(lián)接。

//聯(lián)接成功后ftp_connect()傳回一個(gè)handle句柄;這個(gè)handle將被以后使用的FTP函數(shù)使用。
$conn = ftp_connect(ftp.server.com);

//一旦建立聯(lián)接,使用ftp_login()發(fā)送一個(gè)用戶名稱和用戶密碼。你可以看到,這個(gè)函數(shù)ftp_login()使用了 ftp_connect()函數(shù)傳來(lái)的handle,以確定用戶名和密碼能被提交到正確的服務(wù)器。
ftp_login($conn, “john”, “doe”);

// close connection
ftp_quit($conn);

//登錄了FTP服務(wù)器,PHP提供了一些函數(shù),它們能獲取一些關(guān)于系統(tǒng)和文件以及目錄的信息。
ftp_pwd()

//獲取當(dāng)前所在的目錄
$here = ftp_pwd($conn);

//獲取服務(wù)器端系統(tǒng)信息ftp_systype()
$server_os = ftp_systype($conn);

//被動(dòng)模式(PASV)的開關(guān),打開或關(guān)閉PASV(1表示開)
ftp_pasv($conn, 1);

//進(jìn)入目錄中用ftp_chdir()函數(shù),它接受一個(gè)目錄名作為參數(shù)。
ftp_chdir($conn, “html' target='_blank'>public_html”);

//回到所在的目錄父目錄用ftp_cdup()實(shí)現(xiàn)
ftp_cdup($conn);

//建立或移動(dòng)一個(gè)目錄,這要使用ftp_mkdir()和ftp_rmdir()函數(shù);注意:ftp_mkdir()建立成功的話,就會(huì)返回新建立的目錄名。
ftp_mkdir($conn, “test”);

ftp_rmdir($conn, “test”);

//上傳文件,ftp_put()函數(shù)能很好的勝任,它需要你指定一個(gè)本地文件名,上傳后的文件名以及傳輸?shù)念愋汀1确秸f(shuō):如果你想上傳 “abc.txt”這個(gè)文件,上傳后命名為“xyz.txt”,命令應(yīng)該是這樣:
ftp_put($conn, “xyz.txt”, “abc.txt”, FTP_ASCII);

//下載文件:PHP所提供的函數(shù)是ftp_get(),它也需要一個(gè)服務(wù)器上文件名,下載后的文件名,以及傳輸類型作為參數(shù),例如:服務(wù)器端文件為his.zip,你想下載至本地機(jī),并命名為hers.zip,命令如下:
ftp_get($conn, “hers.zip”, “his.zip”, FTP_BINARY);

//PHP提供兩種方法:一種是簡(jiǎn)單列示文件名和目錄,另一種就是詳細(xì)的列示文件的大小,權(quán)限,創(chuàng)立時(shí)間等信息。

//第一種使用ftp_nlist()函數(shù),第二種用ftp_rawlist().兩種函數(shù)都需要一個(gè)目錄名做為參數(shù),都返回目錄列做為一個(gè)數(shù)組,數(shù)組的每一個(gè)元素相當(dāng)于列表的一行。
$filelist = ftp_nlist($conn, “.”);

//函數(shù)ftp_size(),它返回你所指定的文件的大小,使用BITES作為單位。要指出的是,如果它返回的是 “-1”的話,意味著這是一個(gè)目錄
$filelist = ftp_size($conn, “data.zip”);

?

FTP類
復(fù)制代碼 代碼如下:
?php
/**
* 仿寫CodeIgniter的FTP類
* FTP基本操作:
* 1) 登陸; connect
* 2) 當(dāng)前目錄文件列表; filelist
* 3) 目錄改變;chgdir
* 4) 重命名/移動(dòng);rename
* 5) 創(chuàng)建文件夾;mkdir
* 6) 刪除;delete_dir/delete_file
* 7) 上傳;upload
* 8) 下載download
*
* @author quanshuidingdang
*/
class Ftp {
private $hostname= '';
private $username= '';
private $password= '';
private $port = 21;
private $passive = TRUE;

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大荔县| 乌兰察布市| 大洼县| 华安县| 贵南县| 阳山县| 怀来县| 阿坝县| 德惠市| 南漳县| 雷州市| 乐业县| 曲靖市| 张家口市| 崇仁县| 杨浦区| 江山市| 集安市| 岢岚县| 大渡口区| 海淀区| 湛江市| 渭南市| 西青区| 姚安县| 和林格尔县| 韶关市| 虞城县| 鄯善县| 谢通门县| 伊吾县| 小金县| 交口县| 平南县| 南安市| 贞丰县| 庆城县| 铁力市| 临颍县| 红安县| 洛宁县|