引言
准备工作
在开始之前,请确保您的服务器已安装PHP环境,并且GD库已启用。GD库是PHP中用于图像处理的一个扩展库,它支持生成和编辑多种格式的图像。
HTML表单设计
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>图片上传</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">请选择图片上传:</label>
<input type="file" name="file" id="file">
<input type="submit" value="上传">
</form>
</body>
</html>
在这个表单中,我们使用了enctype="multipart/form-data"属性,这是必须的,因为它允许表单数据以二进制形式发送,这对于文件上传至关重要。
PHP脚本编写
<?php
// 检查是否有文件被上传
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
// 获取文件信息
$file = $_FILES['file'];
$filename = $file['name'];
$filetmp = $file['tmp_name'];
$filetype = $file['type'];
$filesize = $file['size'];
// 定义允许的图片类型
$allowedTypes = array('image/jpeg', 'image/png', 'image/gif');
// 检查文件类型
if (in_array($filetype, $allowedTypes)) {
// 设置上传目录
$uploadDir = 'uploads/';
// 移动上传的文件
if (move_uploaded_file($filetmp, $uploadDir . basename($filename))) {
echo "文件上传成功: " . $uploadDir . basename($filename);
} else {
echo "文件上传失败。";
}
} else {
echo "不支持的文件类型。";
}
}
?>
注意事项
- 确保上传目录
uploads/存在,并且PHP有写入权限。 - 为了安全起见,不要直接使用用户上传的文件名,这可能会导致目录遍历攻击。使用
basename()函数获取文件名是一个好的做法。 - 在生产环境中,您可能需要添加更多的安全检查,例如检查文件大小和内容。