前端:HTML 表单
首先,创建一个 HTML 表单,用于选择并上传文件。这个表单需要包含 enctype="multipart/form-data" 属性,以允许文件上传。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>File Upload</title>
</head><body><h2>Upload a File</h2><form action="upload.php" method="post" enctype="multipart/form-data"><label for="file">Choose file:</label><input type="file" name="file" id="file"><br><br><input type="submit" value="Upload File" name="submit"></form></body></html>
后端:PHP 脚本
然后,创建一个名为 upload.php 的 PHP 文件,用于处理文件上传。
<?php// 检查是否有文件上传if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file']) && $_FILES['file']['error'] == 0) {$targetDir = "uploads/"; // 目标文件夹$targetFile = $targetDir . basename($_FILES["file"]["name"]);$uploadOk = 1;$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));// 检查文件是否为实际图像或伪图像$check = getimagesize($_FILES["file"]["tmp_name"]);if ($check !== false) {echo "File is an image - " . $check["mime"] . ".";$uploadOk = 1;} else {echo "File is not an image.";$uploadOk = 0;}// 检查文件大小(这里设置为5MB)if ($_FILES["file"]["size"] > 5000000) {echo "Sorry, your file is too large.";$uploadOk = 0;}// 允许的文件格式$allowedTypes = array("jpg", "png", "jpeg", "gif");if (!in_array($fileType, $allowedTypes)) {echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";$uploadOk = 0;}// 检查 $uploadOk 是否设置为0(表示有错误)if ($uploadOk == 0) {echo "Sorry, your file was not uploaded.";// 如果一切正常,尝试上传文件} else {if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {echo "The file ". htmlspecialchars(basename($_FILES["file"]["name"])) . " has been uploaded.";} else {echo "Sorry, there was an error uploading your file.";}}
} else {echo "No file was uploaded.";
}?>
结果图:
注意事项
目标文件夹:确保 uploads/ 文件夹存在,并且具有适当的写权限。
文件类型检查:示例代码仅允许上传图像文件(JPG, JPEG, PNG, GIF)。你可以根据需要调整允许的文件类型。
文件大小限制:示例代码限制了文件大小为5MB。你可以根据需求调整这个限制。
安全性:除了检查文件类型和大小,还可以添加更多安全检查,例如验证文件内容、防止文件覆盖等。
错误处理:示例代码包含了一些基本的错误处理。在实际应用中,你可能需要更详细的错误日志和用户反馈。