傳統上,網頁檔案上傳方法是把php的暫時檔拷到上傳目錄。可是如果在伺服器間傳檔,可使用 FTP 來處理。
連線
參數分別是 HOST, PORT, TIMEOUT
$conn = ftp_connect("10.200.0.1", 21, 60) or die("Connect FTP Server Fail");
登入
$ok =ftp_login($conn, "account", "password");
if($ok) // logined
if(!$ok) // login failed
使用被動模式
這個指令必須在ftp_login 後立即使用,第2個參數設為true即為被動模式,設為false關閉被動模式。
ftp_pasv($conn, true);
路徑
剛登入的路徑應該在你登入account的家目錄
$pwd= ftp_pwd($conn); // /home/your_account/
//改變路徑 chdir 進到 /home/youracc/path/to/
ftp_chdir( $conn, "path/to");
//移到上一層 /home/youracc/path/
ftp_cdup( $conn);
上傳及下載
// 取回檔案,使用二進位的方式
if (ftp_get($conn, "local_file", "server_file", FTP_BINARY)) {
echo "Successfully written to local_file\n";
} else {
echo "There was a problem\n";
}
//上傳一個檔案,注意傳送模式為 FTP_ASCII
if (ftp_put($conn, "remote_file", "local_file", FTP_ASCII)) {
echo "successfully uploaded file\n";
} else {
echo "There was a problem while uploading file\n";
}
// 刪除檔案
ftp_delete($conn, "FILENAME");
關閉連結
ftp_close($conn);
補充說明
上傳檔案有 ftp_put, ftp_fput, ftp_nb_put, ftp_nb_fput 這幾個函數,同樣的下載也有對應的四個函數,差別在哪?
ftp_put -- 上傳檔案
ftp_fput -- 上傳檔案指標
ftp_nb_put -- 非同步法上傳檔案
ftp_nb_fput -- 非同步法上傳檔案指標
延伸閱讀
參考資料
[1] PHP 官網 http://tw.php.net/manual/en/ref.ftp.php