在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"目录。请注意,在生产环境中使用文件上传功能时,请务必对用户上传的文件进行充分验证,以防止潜在的安全风险。