简介
步骤解析
1. 准备工作
mkdir -p /path/to/upload/directory
chmod 755 /path/to/upload/directory
2. 创建HTML表单
<form action="upload.php" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="image">
<input type="submit" value="上传">
</form>
3. 编写PHP上传脚本
<?php
// 检查是否有文件被上传
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
// 检查上传的文件是否是图片
$check = getimagesize($image['tmp_name']);
if ($check !== false) {
$upload_dir = '/path/to/upload/directory/';
$image_name = basename($image['name']);
$destination = $upload_dir . $image_name;
// 移动上传的文件到指定目录
if (move_uploaded_file($image['tmp_name'], $destination)) {
echo "文件已成功上传到: " . $destination;
} else {
echo "上传失败,请检查文件路径和权限。";
}
} else {
echo "上传的文件不是有效的图片。";
}
} else {
echo "未上传任何文件。";
}
?>
4. 安全检查
// 检查文件大小
$max_size = 500000; // 500KB
if ($image['size'] > $max_size) {
echo "文件大小超过。";
exit;
}
// 允许的文件类型
$allowed_types = ['jpg', 'jpeg', 'png', 'gif'];
$ext = strtolower(pathinfo($image['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $allowed_types)) {
echo "不允许的文件类型。";
exit;
}
常见问题解答
问题1:上传的图片无法显示
问题2:上传的文件被截断
解答:可能是文件大小超过了PHP配置文件 php.ini 中的 upload_max_filesize 或 post_max_size 。修改这些设置并重启服务器即可。
问题3:上传后服务器崩溃
解答:可能是上传的文件太大,导致服务器内存溢出。可以通过增加 memory_limit 设置来解决这个问题。