PHP的FTP學習(一)

來源:互聯網
上載者:User

By Vikram Vaswani
Melonfire
November 07, 2000
我們是一群PHP的忠實FANS,我們因各種不同的原因使用它-WEB網站的開發,畫圖,資料庫的聯結等 -我們發現,它非常的友好,強大而且便於使用……
你可能已經看到PHP是怎樣被用於建立GIF和JPEG映像,從資料庫中動態擷取資訊等等,但這隻是冰山的一角---最新版本的PHP擁有著強大的檔案傳輸功能。
在這篇教程裡,我將向你展示FTP怎樣通過HTTP和FTP聯結來傳輸檔案,同時也會有一些簡單的程式碼,跟我來吧!

首先,你應該知道PHP是通過HTTP和FTP聯結來傳輸檔案的。通過HTTP上傳檔案早在PHP3中就已經出現,現在,新的FTP函數已經在新的PHP版本中出現了!
開始之前,你需要確信你的PHP支援FTP,你可以通過以下代碼查知:

--------------------------------------------------------------------------------
<?

phpinfo();

?>
--------------------------------------------------------------------------------
檢查輸出結果,有一“Additional Modules”區,這裡列示了你的PHP支援的模組;如果你沒發現FTP模組,你最好重新安裝PHP,並添加FTP支援!

先讓我們來看看一個典型的FTP任務是怎樣完成的吧!
--------------------------------------------------------------------------------
$ 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.
--------------------------------------------------------------------------------
你可以看到,進程明顯被分為幾段:聯結(與FTP伺服器建立聯結)、驗證(確定使用者是否有權力進入系統)、傳輸(這裡包括列目錄,上傳或下載檔案)、取消聯結。

使用PHP來FTP的步驟
建立一個PHP的FTP聯結必須遵守以下基本步驟:開啟一個聯結 - 發出認證資訊 - 使用PHP函數操縱目錄和傳輸檔案。
以下具體實現:
--------------------------------------------------------------------------------
<?

// 聯結FTP伺服器
$conn = ftp_connect("ftp.server.com");

// 使用username和password登入
ftp_login($conn, "john", "doe");

// 擷取遠端系統類別型
ftp_systype($conn);

// 列示檔案
$filelist = ftp_nlist($conn, ".");

// 下載檔案
ftp_get($conn, "data.zip", "data.zip", FTP_BINARY);

// 關閉聯結
ftp_quit($conn);

?>
--------------------------------------------------------------------------------
讓我們一步步的來:
為了初結化一個FTP聯結,PHP提供了ftp_connect()這個函數,它使用主機名稱和連接埠作為參數。在上面的例子裡,主機名稱字為“ftp.server.com”;如果連接埠沒指定,PHP將會使用“21”作為預設連接埠來建立聯結。
聯結成功後ftp_connect()傳回一個handle控制代碼;這個handle將被以後使用的FTP函數使用。
--------------------------------------------------------------------------------
<?

// connect to FTP server
$conn = ftp_connect("ftp.server.com");

?>
--------------------------------------------------------------------------------
一旦建立聯結,使用ftp_login()發送一個使用者名稱稱和使用者密碼。你可以看到,這個函數ftp_login()使用了ftp_connect()函數傳來的handle,以確定使用者名稱和密碼能被提交到正確的伺服器。
--------------------------------------------------------------------------------
<?

// log in with username and password
ftp_login($conn, "john", "doe");

?>
--------------------------------------------------------------------------------
這時,你就能夠做你想做的事情了,具體在下一部分講:

做完你想做的事後,千萬要記住使用ftp_quit()函數關閉你的FTP聯結

--------------------------------------------------------------------------------
<?

// close connection
ftp_quit($conn);

?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.