📜  如何使用PHP PDO 在 MySQL 中上传图片?(1)

📅  最后修改于: 2023-12-03 14:52:03.622000             🧑  作者: Mango

如何使用 PHP PDO 在 MySQL 中上传图片?

在 PHP 开发中,经常需要使用 PDO 扩展来连接和操作 MySQL 数据库。下面将介绍如何使用 PHP PDO 在 MySQL 中实现图片上传功能。

准备工作

在开始之前,确保你已经安装了 PHP 和 MySQL,并将 PDO 扩展启用。另外,创建一个数据库用于存储上传的图片,并将以下代码保存为 config.php 文件,用于连接数据库:

<?php
$host = 'localhost';
$dbname = 'your_database_name';
$username = 'your_username';
$password = 'your_password';

$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];

try {
    $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
    exit("数据库连接失败:" . $e->getMessage());
}

请将 your_database_nameyour_usernameyour_password 替换为你的数据库名称、用户名和密码。

图片上传功能

下面是一个简单的示例代码,用于实现图片上传功能。

<?php
require_once 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $uploadDir = 'uploads/'; // 图片上传目录

    $fileName = $_FILES['image']['name'];
    $fileType = $_FILES['image']['type'];
    $fileSize = $_FILES['image']['size'];
    $fileTmp = $_FILES['image']['tmp_name'];

    $targetFile = $uploadDir . basename($fileName);

    // 检查文件类型
    $allowedTypes = ['image/jpeg', 'image/png'];
    if (!in_array($fileType, $allowedTypes)) {
        exit('只允许上传 JPEG 和 PNG 格式的图片');
    }

    // 检查文件大小
    $maxFileSize = 2 * 1024 * 1024; // 2MB
    if ($fileSize > $maxFileSize) {
        exit('图片大小不能超过 2MB');
    }

    // 将图片移动到上传目录
    if (move_uploaded_file($fileTmp, $targetFile)) {
        // 将图片信息插入数据库
        $sql = "INSERT INTO images (file_name, file_path) VALUES (?, ?)";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$fileName, $targetFile]);

        echo '图片上传成功';
    } else {
        echo '图片上传失败';
    }
}
?>

上述代码通过 $_FILES 全局变量获取上传的图片信息,并进行了一些校验,如文件类型和大小的判断。如果校验通过,将图片移动到指定目录,并将图片信息插入到数据库中。

你可以根据需要调整上传目录、允许的文件类型和最大文件大小等。

获取上传的图片列表

如果你希望获取已上传的图片列表,可以使用以下代码:

<?php
require_once 'config.php';

$sql = "SELECT * FROM images";
$stmt = $pdo->query($sql);
$images = $stmt->fetchAll();

foreach ($images as $image) {
    echo "图片名称:{$image['file_name']},路径:{$image['file_path']}<br>";
}
?>

上述代码从数据库中查询所有的图片信息,并在页面上显示图片名称和路径。你可以根据实际需求进行修改和美化。

结语

通过上述方法,你可以使用 PHP PDO 在 MySQL 中实现图片上传功能,并能够方便地获取已上传的图片列表。记得在上传图片的目录设置合适的权限,以便 PHP 能够写入文件。

希望本文对你有所帮助,祝你编写出优秀的 PHP 代码!