<?php
$targetDir = "uploads/";
$uploadSuccess = false;
$uploadError = '';
if (isset($_POST["submit"])) {
$fileName = basename($_FILES["fileToUpload"]["name"]);
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
// 允许的文件类型
$allowTypes = array('jpg', 'png', 'jpeg', 'gif', 'pdf');
if (in_array($fileType, $allowTypes)) {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFilePath)) {
$uploadSuccess = true;
} else {
$uploadError = "文件上传失败,请重试。";
}
} else {
$uploadError = '仅允许上传 JPG, JPEG, PNG, GIF, 或 PDF 文件.';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文件上传功能示例</title>
</head>
<body>
<h1>文件上传功能示例</h1>
<!-- 文件上传表单 -->
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload" required>
<br><br>
<button type="submit" name="submit">上传文件</button>
</form>
<?php if ($uploadSuccess): ?>
<p style="color:green;">文件上传成功!</p>
<?php elseif ($uploadError): ?>
<p style="color:red;"><?php echo $uploadError; ?></p>
<?php endif; ?>
</body>
</html>
-
文件上传表单: 在HTML表单中,使用
<input type="file">
元素允许用户选择要上传的文件。 -
PHP处理逻辑:
- 设置目标上传目录
$targetDir
。 - 当用户提交表单时,PHP脚本会检查上传的文件类型和大小。
- 如果文件类型符合要求,并且上传成功,文件将被移动到指定的目标目录中。
- 如果文件上传失败或不符合要求,将显示相应的错误消息。
- 设置目标上传目录
-
安全性考虑:
- 使用
move_uploaded_file
函数移动文件,确保仅允许合法的文件类型上传。 - 在PHP中处理文件上传时,必须格外小心,以防止文件注入攻击或滥用。
- 使用
-
用户反馈:
- 根据上传结果,在页面上显示相应的成功或错误消息,以便用户了解上传状态。
这个示例展示了如何在PHP中实现基本的文件上传功能,并提供了一个简单的界面来测试文件上传的操作。在实际应用中,可以根据需要扩展此功能,添加更多的验证和安全措施,以确保系统的稳健性和安全性。