在PHP中,要實現(xiàn)文件上傳功能,你需要使用HTML表單、PHP腳本以及一個可上傳文件的服務(wù)器目錄。以下是一個簡單的文件上傳示例:
<!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"
屬性,這是必須的,因為它允許表單提交二進(jìn)制數(shù)據(jù)。
upload.php
的PHP腳本,以處理表單提交的文件:<?php
$target_dir = "uploads/"; // 上傳目錄
$target_file = $target_dir . basename($_FILES["uploaded_file"]["name"]); // 目標(biāo)文件名
$uploadOk = 1; // 設(shè)置上傳狀態(tài)
$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;
}
// 檢查上傳目錄; 如果不存在,則嘗試創(chuàng)建一個
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 "抱歉,文件上傳出現(xiàn)問題。";
}
}
?>
這個簡單的示例將允許用戶從本地計算機(jī)選擇一個文件并上傳到服務(wù)器上的"uploads"目錄。請注意,在生產(chǎn)環(huán)境中使用文件上傳功能時,請務(wù)必對用戶上傳的文件進(jìn)行充分驗證,以防止?jié)撛诘陌踩L(fēng)險。