简介

步骤解析

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_filesizepost_max_size 。修改这些设置并重启服务器即可。

问题3:上传后服务器崩溃

解答:可能是上传的文件太大,导致服务器内存溢出。可以通过增加 memory_limit 设置来解决这个问题。