引言

第一章:PHP图片上传基础

1.1 图片上传原理

  1. 前端表单提交图片文件。
  2. 服务器接收图片文件。
  3. 服务器处理图片文件(如验证、重命名、保存等)。
  4. 将图片文件保存到服务器指定位置。

1.2 PHP上传文件函数

PHP提供了move_uploaded_file()函数用于上传文件。该函数的原型如下:

bool move_uploaded_file(string $source, string $destination)

其中,$source是上传文件的临时路径,$destination是上传文件的新路径。

1.3 文件上传验证

  • 验证文件类型:通过文件的扩展名或MIME类型进行验证。
  • 验证文件大小:上传文件的大小,防止恶意上传大文件占用服务器资源。
  • 验证文件内容:通过读取文件内容进行验证,确保上传的是图片文件。

第二章:PHP单图上传实战

2.1 创建前端表单

<form action="upload.php" method="post" enctype="multipart/form-data">
    选择图片:<input type="file" name="image" />
    <input type="submit" value="上传" />
</form>

2.2 PHP处理上传文件

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_FILES['image'])) {
        $image = $_FILES['image'];
        // 验证文件类型
        if ($image['type'] == 'image/jpeg' || $image['type'] == 'image/png') {
            // 验证文件大小
            if ($image['size'] <= 2000000) {
                // 处理上传文件
                $destination = "uploads/" . basename($image['name']);
                if (move_uploaded_file($image['tmp_name'], $destination)) {
                    echo "文件上传成功!";
                } else {
                    echo "文件上传失败!";
                }
            } else {
                echo "文件大小超过!";
            }
        } else {
            echo "非法文件类型!";
        }
    } else {
        echo "没有选择文件!";
    }
}
?>

2.3 保存上传的图片

第三章:PHP多图上传实战

3.1 修改前端表单

<form action="upload.php" method="post" enctype="multipart/form-data">
    选择图片:<input type="file" name="images[]" multiple />
    <input type="submit" value="上传" />
</form>

3.2 PHP处理上传文件

upload.php文件中,我们需要修改代码以处理多图上传。以下是处理多图上传的基本步骤:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_FILES['images'])) {
        $images = $_FILES['images'];
        foreach ($images['name'] as $key => $name) {
            $image = $images['tmp_name'][$key];
            $error = $images['error'][$key];
            // 验证文件类型和大小
            if ($error == 0) {
                if ($images['type'][$key] == 'image/jpeg' || $images['type'][$key] == 'image/png') {
                    $destination = "uploads/" . basename($name);
                    if (move_uploaded_file($image, $destination)) {
                        echo "文件《{$name}》上传成功!<br/>";
                    } else {
                        echo "文件《{$name}》上传失败!<br/>";
                    }
                } else {
                    echo "文件《{$name}》非法文件类型!<br/>";
                }
            } else {
                echo "文件《{$name}》上传出错!错误代码:{$error}<br/>";
            }
        }
    } else {
        echo "没有选择文件!";
    }
}
?>

3.3 保存上传的图片

第四章:总结