php $_files能實(shí)現(xiàn)什么

PHP
小樊
81
2024-11-20 18:23:01
欄目: 編程語言

$_FILES 是 PHP 中的一個(gè)預(yù)定義全局?jǐn)?shù)組,用于處理 HTTP 文件上傳。當(dāng)用戶通過表單提交一個(gè)文件時(shí),$_FILES 數(shù)組會(huì)自動(dòng)收集有關(guān)該文件的信息。這些信息包括文件的原始文件名、文件類型、文件大小以及臨時(shí)文件路徑等。使用 $_FILES,您可以處理用戶上傳的文件,例如將其保存到服務(wù)器上的某個(gè)位置或?qū)⑺鼈円苿?dòng)到其他目錄。

以下是 $_FILES 數(shù)組的一些常見元素:

  • $_FILES['filename']['name']:上傳文件的原始文件名。
  • $_FILES['filename']['type']:上傳文件的 MIME 類型。
  • $_FILES['filename']['size']:上傳文件的大?。ㄒ宰止?jié)為單位)。
  • $_FILES['filename']['error']:文件上傳過程中的錯(cuò)誤代碼。通常,0 表示沒有錯(cuò)誤,1 表示上傳文件太大,2 表示文件上傳被中斷,4 表示沒有找到上傳文件。
  • $_FILES['filename']['tmp_name']:上傳文件在服務(wù)器上的臨時(shí)存儲(chǔ)路徑。

以下是一個(gè)簡單的示例,展示了如何使用 $_FILES 數(shù)組處理文件上傳:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  選擇要上傳的文件:
  <input type="file" name="filename">
  <input type="submit" value="上傳">
</form>

</body>
</html>

接下來,創(chuàng)建一個(gè)名為 upload.php 的 PHP 文件來處理文件上傳:

<?php
if ($_FILES["filename"]["error"] > 0) {
  echo "錯(cuò)誤:" . $_FILES["filename"]["error"] . "<br>";
} else {
  $target_dir = "uploads/";
  $target_file = $target_dir . basename($_FILES["filename"]["name"]);
  $uploadOk = 1;
  $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

  // 檢查文件是否為有效上傳
  if (isset($_POST["submit"])) {
    $check = getimagesize($_FILES["filename"]["tmp_name"]);
    if ($check !== false) {
      echo "文件是一張圖片 - " . $check["mime"] . ".";
      $uploadOk = 1;
    } else {
      echo "文件不是一張圖片。";
      $uploadOk = 0;
    }
  }

  // 檢查上傳文件夾是否存在
  if (!file_exists($target_dir)) {
    mkdir($target_dir, 0777, true);
  }

  // 嘗試上傳文件
  if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
      echo "文件:" . htmlspecialchars(basename($_FILES["filename"]["name"])) . " 已經(jīng)上傳成功。";
    } else {
      echo "抱歉,文件上傳失敗。";
    }
  }
}
?>

在這個(gè)示例中,我們首先檢查上傳過程中是否有錯(cuò)誤。如果沒有錯(cuò)誤,我們將檢查上傳的文件是否為圖片,然后將其移動(dòng)到服務(wù)器上的 “uploads” 文件夾中。如果上傳成功,我們會(huì)顯示一條消息,否則會(huì)顯示一條錯(cuò)誤消息。

0