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

PHP FTP 上傳檔案完整範例

     編輯:PHP 相關知識

基本流程

  1. ftp_connect() 建立連線
  2. ftp_login() 驗證帳密
  3. ftp_put() 上傳檔案(FTP_BINARY 或 FTP_ASCII)
  4. ftp_close() 關閉連線

完整程式碼

<?php
$ftp_server = "ftp.example.com";
$ftp_user   = "username";
$ftp_pass   = "password";

// 連線
$conn = @ftp_connect($ftp_server) or die("無法連線至 $ftp_server");
$login = @ftp_login($conn, $ftp_user, $ftp_pass);
if (!$login) die("FTP 登入失敗:帳號或密碼錯誤");
echo "已連線:$ftp_server<br>";

// 上傳
$localFile  = "/var/www/data/" . date("Ymd") . ".xml";   // 來源檔
$remoteFile = "/backup/" . basename($localFile);         // 目的路徑

if (@ftp_put($conn, $remoteFile, $localFile, FTP_BINARY)) {
    echo "上傳成功:$localFile → $remoteFile<br>";
} else {
    echo "上傳失敗<br>";
}

ftp_close($conn);
?>

進階技巧

  • 被動模式: ftp_pasv($conn, true)(預設主動模式常被防火牆阻擋)。
  • 錯誤處理: 用 ftp_get_option($conn, FTP_TIMEOUT_SEC) 設定逾時,搭配 @ 抑制警告並自行判斷回傳值。
  • 斷點續傳: ftp_nb_put() 非阻塞上傳,配合迴圈實作大檔案斷點續傳。
  • 目錄操作: ftp_mkdir(), ftp_chdir(), ftp_nlist() 列目錄。
  • SSL/TLS (FTPS): 改用 ftp_ssl_connect()(需 PHP 編譯支援 OpenSSL)。

常見問題

現象解決
連線逾時檢查防火牆、FTP Server 是否開啟被動模式埠範圍、啟用 ftp_pasv()
登入失敗確認帳密、主動/被動模式、IP 白名單、TLS 強制加密
上傳 0 位元組本地檔案不存在、路徑錯誤、權限不足
中文檔名亂碼FTP 協定不支援 Unicode,建議上傳前以英文/時間戳命名,或用 rawurlencode() 並確認 Server 支援 UTF-8
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved