使用PHP 上傳檔案:排除「未定義變數:HTTP_POST_FILES」錯誤
使用PHP 將檔案上傳到伺服器可以是簡單的簡單過程。但是,必須解決在此過程中可能出現的任何錯誤。
問題:
嘗試使用 PHP 上傳檔案時發生錯誤:「注意:未定義的變數: HTTP_POST_FILES」。
原因:
$HTTP_POST_FILES變數指的是儲存上傳檔案資訊的全域陣列。然而,它自 PHP 4.1.0 起已被棄用,不建議使用。
解決方案:
現代 PHP 版本期望使用不同的結構來存取上傳的檔案資料。使用以下方法取代 $HTTP_POST_FILES:
$_FILES["file_name"]["key"]
其中:
範例程式碼:
以下改進的 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中文網其他相關文章!