首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 建立 FTP 連線與檔案上傳操作詳解

     編輯:PHP 相關知識

PHP 建立 FTP 連線與檔案上傳操作詳解

PHP 內建 FTP 擴展提供完整的 FTP 客戶端功能,支援連線、登入、被動模式、檔案上傳/下載、目錄操作等。

常用函式速查

函式說明
ftp_connect(host, port, timeout)建立連線,port 預設 21,timeout 秒
ftp_login(conn, user, pass)登入驗證
ftp_pasv(conn, true)開啟被動模式(客戶端發起資料連線),穿透防火牆/NAT 必開
ftp_put(conn, remote, local, mode)上傳檔案,mode: FTP_ASCII 或 FTP_BINARY
ftp_get(conn, local, remote, mode)下載檔案
ftp_chdir(conn, dir)切換遠端目錄
ftp_mkdir(conn, dir)建立遠端目錄
ftp_close(conn)關閉連線

完整上傳範例

<?php
$host = 'ftp.example.com';
$user = 'username';
$pwd  = 'password';
$local_file = 'data.txt';
$remote_file = 'uploads/data.txt';

$conn = ftp_connect($host) or die("無法連線 $host");
$login = ftp_login($conn, $user, $pwd) or die("登入失敗");
ftp_pasv($conn, true); // 強烈建議開啟被動模式

// 二進制模式上傳(適用圖片、壓縮檔等)
$upload = ftp_put($conn, $remote_file, $local_file, FTP_BINARY);
if ($upload) {
    echo "上傳成功:$remote_file";
} else {
    echo "上傳失敗";
}
ftp_close($conn);
?>

進階:遞迴上傳整個目錄

function ftp_put_dir($conn, $local_dir, $remote_dir) {
    if (!ftp_chdir($conn, $remote_dir)) {
        ftp_mkdir($conn, $remote_dir);
        ftp_chdir($conn, $remote_dir);
    }
    $handle = opendir($local_dir);
    while (($file = readdir($handle)) !== false) {
        if ($file === '.' || $file === '..') continue;
        $local_path = $local_dir . '/' . $file;
        if (is_dir($local_path)) {
            ftp_put_dir($conn, $local_path, $file);
        } else {
            ftp_put($conn, $file, $local_path, FTP_BINARY);
        }
    }
    closedir($handle);
    ftp_cdup($conn); // 返回上層目錄
}

常見問題排查

  • 連線逾時:檢查防火牆、安全組、FTP Server 被動模式端口範圍是否開放。
  • 上傳 0 位元組:未開啟被動模式、本地檔案路徑錯誤、磁碟空間不足。
  • 中文檔名亂碼:FTP 協議不規範編碼,建議上傳前將檔名 urlencode 或統一用英文/數字命名。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved