首頁 >後端開發 >php教程 >為什麼在 PHP 中上傳檔案時出現「未定義的變數:HTTP_POST_FILES」錯誤?

為什麼在 PHP 中上傳檔案時出現「未定義的變數:HTTP_POST_FILES」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-10 01:57:09340瀏覽

Why Am I Getting the

使用PHP 上傳檔案:排除「未定義變數:HTTP_POST_FILES」錯誤

使用PHP 將檔案上傳到伺服器可以是簡單的簡單過程。但是,必須解決在此過程中可能出現的任何錯誤。

問題:
嘗試使用 PHP 上傳檔案時發生錯誤:「注意:未定義的變數: HTTP_POST_FILES」。

原因:
$HTTP_POST_FILES變數指的是儲存上傳檔案資訊的全域陣列。然而,它自 PHP 4.1.0 起已被棄用,不建議使用。

解決方案:
現代 PHP 版本期望使用不同的結構來存取上傳的檔案資料。使用以下方法取代 $HTTP_POST_FILES:

$_FILES["file_name"]["key"]

其中:

  • file_name 是選取檔案的輸入欄位的名稱。
  • key 是正在存取的檔案的特定方面(例如,「名稱」、「類型」、「大小」、 "tmp_name")。

範例程式碼:

以下改進的 PHP 程式碼遵循檔案上傳的最佳實踐:

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["filename"]["name"]);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png'];

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        echo "Type is not allowed";
    }
    // Check if file already exists
    elseif (file_exists($target_file)) {
        echo "Sorry, file already exists.";
    }
    // Check file size
    elseif ($_FILES["filename"]["size"] > 5000000) {
        echo "Sorry, file is too large.";
    } else {
        // Upload file
        if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
            echo "File uploaded successfully.";
        }
    }
}

以上是為什麼在 PHP 中上傳檔案時出現「未定義的變數:HTTP_POST_FILES」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn