引言
前端表单设计
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="fileToUpload">选择图片文件:</label>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传图片">
</form>
在上面的代码中,enctype="multipart/form-data" 是必须的,它告诉表单如何处理文件数据。
后端处理
<?php
// 检查是否有文件被上传
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['fileToUpload'])) {
$file = $_FILES['fileToUpload'];
$file_name = $file['name'];
$file_tmp_name = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_type = $file['type'];
// 定义允许的图片类型
$allowed_types = array('image/jpeg', 'image/png', 'image/gif');
// 验证文件类型
if (in_array($file_type, $allowed_types)) {
// 验证文件大小(例如,不超过 2MB)
if ($file_size <= 2097152) {
// 验证是否有错误发生
if ($file_error === 0) {
// 移动文件到指定目录
$destination = "uploads/" . basename($file_name);
if (move_uploaded_file($file_tmp_name, $destination)) {
echo "文件上传成功!";
} else {
echo "文件上传失败。";
}
} else {
echo "错误:文件上传错误代码 " . $file_error;
}
} else {
echo "错误:文件大小超出。";
}
} else {
echo "错误:不支持的文件类型。";
}
}
?>
文件验证
在上面的代码中,我们进行了以下验证:
- 检查是否通过 POST 方法提交了文件。
- 验证文件类型是否为允许的类型。
- 验证文件大小是否在范围内。
- 验证文件上传过程中是否发生错误。
错误处理
错误处理是上传过程中非常重要的一环。在上面的代码中,我们通过检查 $file_error 变量来处理可能发生的错误。