By Vikram Vaswani Melonfire November 07, 2000 我們是一群PHP的忠實(shí)FANS,我們因各種不同的原因使用它-WEB站點(diǎn)的開發(fā),畫圖,數(shù)據(jù)庫的聯(lián)接等 -我們發(fā)現(xiàn),它非常的友好,強(qiáng)大而且易于使用…… 你可能已經(jīng)看到PHP是怎樣被用于創(chuàng)建GIF和JPEG圖像,從數(shù)據(jù)庫中動(dòng)態(tài)的獲取信息等等,但這只是冰山的一角---最新版本的PHP擁有著強(qiáng)大的文件傳輸功能。 在這篇教程里,我將向你展示FTP怎樣通過HTTP和FTP聯(lián)接來傳輸文件,同時(shí)也會(huì)有一些簡(jiǎn)單的程序代碼,跟我來吧!
首先,你應(yīng)該知道PHP是通過HTTP和FTP聯(lián)接來傳輸文件的。通過HTTP上傳文件早在PHP3中就已經(jīng)出現(xiàn),現(xiàn)在,新的FTP函數(shù)已經(jīng)在新的PHP版本中出現(xiàn)了! 開始之前,你需要確信你的PHP支持FTP,你可以通過以下代碼查知:
-------------------------------------------------------------------------------- <?
phpinfo();
?> -------------------------------------------------------------------------------- 檢查輸出結(jié)果,有一“Additional Modules”區(qū),這里列示了你的PHP支持的模塊;如果你沒發(fā)現(xiàn)FTP模塊,你最好重新安裝PHP,并添加FTP支持!
先讓我們來看看一個(gè)典型的FTP任務(wù)是怎樣完成的吧! -------------------------------------------------------------------------------- $ ftp ftp.server.com Connected to ftp.server.com 220 server.com FTP server ready. Name (server:john): john 331 Password required for john. Password: 230 User john logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. drwxr-xr-x 5 john users 3072 Nov 2 11:03 . drwxr-xr-x 88 root root 2048 Nov 1 23:26 .. drwxr--r-- 2 john users 1024 Oct 5 13:26 bin drwx--x--x 8 john users 1024 Nov 2 10:59 public_html drwxr--r-- 4 john users 1024 Nov 2 11:26 tmp -rw-r--r-- 1 john users 2941465 Oct 9 17:21 data.zip 226 Transfer complete. ftp> bin 200 Type set to I. ftp> get data.zip local: data.zip remote: data.zip 200 PORT command successful. 150 Opening BINARY mode data connection for data.zip(2941465 bytes). 226 Transfer complete. ftp> bye 221 Goodbye. -------------------------------------------------------------------------------- 你可以看到,進(jìn)程明顯被分為幾段:聯(lián)接(與FTP服務(wù)器建立聯(lián)接)、驗(yàn)證(確定用戶是否有權(quán)力進(jìn)入系統(tǒng))、傳輸(這里包括列目錄,上傳或下載文件)、取消聯(lián)接。
使用PHP來FTP的步驟 建立一個(gè)PHP的FTP聯(lián)接必須遵守以下基本步驟:打開一個(gè)聯(lián)接 - 發(fā)出認(rèn)證信息 - 使用PHP函數(shù)操縱目錄和傳輸文件。 以下具體實(shí)現(xiàn): -------------------------------------------------------------------------------- <?
// 聯(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”;如果端口沒指定,PHP將會(huì)使用“21”作為缺省端口來建立聯(lián)接。 聯(lián)接成功后ftp_connect()傳回一個(gè)handle句柄;這個(gè)handle將被以后使用的FTP函數(shù)使用。 -------------------------------------------------------------------------------- <?
// connect to FTP server $conn = ftp_connect("ftp.server.com");
?> -------------------------------------------------------------------------------- 一旦建立聯(lián)接,使用ftp_login()發(fā)送一個(gè)用戶名稱和用戶密碼。你可以看到,這個(gè)函數(shù)ftp_login()使用了ftp_connect()函數(shù)傳來的handle,以確定用戶名和密碼能被提交到正確的服務(wù)器。 -------------------------------------------------------------------------------- <?
// log in with username and password ftp_login($conn, "john", "doe");
?> -------------------------------------------------------------------------------- 這時(shí),你就能夠做你想做的事情了,具體在下一部分講:
做完你想做的事后,千萬要記住使用ftp_quit()函數(shù)關(guān)閉你的FTP聯(lián)接 -------------------------------------------------------------------------------- <?
// close connection ftp_quit($conn);
?>
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!