在PHP中,要實現文件上傳功能,你需要使用HTML表單、PHP腳本以及一個可上傳文件的服務器目錄。以下是一個簡單的文件上傳示例:
<!DOCTYPE html>
<html>
<head>
<title>文件上傳</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
選擇一個要上傳的文件:
<input type="file" name="uploaded_file">
<br><br>
<input type="submit" value="上傳文件" name="submit">
</form>
</body>
</html>
注意enctype="multipart/form-data"
屬性,這是必須的,因為它允許表單提交二進制數據。
upload.php
的PHP腳本,以處理表單提交的文件:<?php
$target_dir = "uploads/"; // 上傳目錄
$target_file = $target_dir . basename($_FILES["uploaded_file"]["name"]); // 目標文件名
$uploadOk = 1; // 設置上傳狀態
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // 檢查文件類型
// 檢查文件是否為實際文件
if (isset($_POST["submit"])) {
$check = getimagesize($_FILES["uploaded_file"]["tmp_name"]);
if ($check !== false) {
echo "文件是一張圖片 - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "文件不是一張圖片。";
$uploadOk = 0;
}
}
// 檢查文件大小
if ($_FILES["uploaded_file"]["size"] > 500000) {
echo "抱歉,你的文件太大了。請上傳小于500KB的文件。";
$uploadOk = 0;
}
// 允許特定文件格式
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
echo "抱歉,只允許 JPG、JPEG、PNG 和 GIF 格式的文件。";
$uploadOk = 0;
}
// 檢查上傳目錄; 如果不存在,則嘗試創建一個
if (!file_exists($target_dir)) {
mkdir($target_dir, 0777, true);
}
// 嘗試上傳文件
if ($uploadOk == 1) {
if (move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $target_file)) {
echo "文件 " . htmlspecialchars(basename($_FILES["uploaded_file"]["name"])) . " 上傳成功。";
} else {
echo "抱歉,文件上傳出現問題。";
}
}
?>
這個簡單的示例將允許用戶從本地計算機選擇一個文件并上傳到服務器上的"uploads"目錄。請注意,在生產環境中使用文件上傳功能時,請務必對用戶上傳的文件進行充分驗證,以防止潛在的安全風險。