如何使用 PHP 将图片上传到数据库并显示

phpserver side programmingprogramming更新于 2025/7/8 21:07:17

在现代 Web 应用程序中,出于各种原因(例如安全性、易于管理和可扩展性),将图片存储在数据库中是很常见的。PHP 作为一种流行的服务器端脚本语言,提供了一种将图片上传到数据库并在网页上显示的简便方法。

在本文中,我们将学习如何使用 PHP 将图片上传到数据库并显示。 PHP(PHP 的递归缩写:超文本预处理器)是一种广泛使用的开源通用脚本语言,尤其适用于 Web 开发,并且可以嵌入到 HTML 中。

在下文中,我们演示了在 Web 应用程序中实现文件上传功能的完整过程示例,并将实现以下功能。

  • 用于上传图片的 HTML 表单。

  • 使用 PHP 将图片上传到服务器。

  • 使用 PHP 和 MySQL 将文件名存储在数据库中。

  • 从数据库中检索图片并显示在网页上。

使用 PHP 将图片上传到数据库的方法

要创建数据库表,请确保您已安装 WAMP 或 XAMP 服务器,或者使用 phpMyAdmin 等工具。 phpMyAdmin 是一款基于 Web 的应用程序,可用于管理 MySQL 数据库。以下是使用 phpMyAdmin 创建表的步骤。

步骤 1:创建数据库和表

首先,我们将创建一个名为"tutorialspoint"的数据库。或者,您可以使用现有数据库,也可以创建一个新的数据库。

之后,我们将在数据库中创建一个用于存储图像数据的表。该表必须包含一个"BLOB"(二进制大对象)类型的列,该列可以存储大型二进制数据,例如图像。

例如,以下 SQL 查询用于创建一个名为"images"的表,该表包含三列:"id"、"name"和"data"。 "id"列是自动递增的主键,"name"列用于存储图像的文件名,"data"列用于存储图像的二进制数据。

要在 PHPMyAdmin 的 SQL 面板中使用以下代码创建表。

CREATE TABLE images (
   id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
   name VARCHAR(255) NOT NULL,
   data LONGBLOB NOT NULL
);

步骤 2:创建 HTML 表单以上传图片

下一步是创建一个 HTML 表单,允许用户选择并上传图片。该表单必须包含一个"file"类型的输入字段,允许用户从电脑中浏览并选择图片文件。提交表单后,所选图片文件将被发送到服务器进行处理。

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="image" />
    <input type="submit" name="submit" value="Upload" />
</form>

请注意,表单有三个重要属性:

"method"属性设置为"post",表示表单数据将使用 HTTP POST 方法发送到服务器。

"action"属性设置为"upload.php",这是处理图片上传的 PHP 脚本的名称。

"enctype"属性设置为"multipart/form-data",这是上传文件时必需的。

步骤 3:处理上传的图片

下一步是创建一个 PHP 脚本,用于处理上传的图片并将其存储在数据库中。该脚本必须首先检查图片文件是否已上传,如果已上传,则提取其二进制数据并将其存储在数据库中。

以下是一个名为"upload.php"的 PHP 脚本示例,用于执行此操作:

<?php
   // 检查图像文件是否已上传
   if(isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
      $name = $_FILES['image']['name'];
      $type = $_FILES['image']['type'];
      $data = file_get_contents($_FILES['image']['tmp_name']);
      // 连接到数据库
      $pdo = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
      // 将图像数据插入数据库
      $stmt = $pdo->prepare("INSERT INTO images (name, type, data) VALUES (?, ?, ?)");
      $stmt->bindParam(1, $name);
      $stmt->bindParam(2, $type);
      $stmt->bindParam(3, $data);
      $stmt->execute();
   }
?>

步骤 4:在网页上显示图片

最后一步是创建一个 PHP 脚本,用于从数据库中检索图片数据并将其显示在网页上。该脚本必须首先使用 SELECT 语句从数据库中检索图片数据,然后使用适当的 MIME 类型将图片数据输出为二进制数据。

以下是一个名为"display.php"的 PHP 脚本示例,它执行此操作:

<?php
    // 从 URL 获取图片的 ID
    $id = $_GET['id'];
    // 连接到数据库
    $pdo = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
    // 从数据库中检索图像数据
    $stmt = $pdo->prepare("SELECT name, type, data FROM images WHERE id=?);
    $stmt->bindParam(1, $id);
    $stmt->execute();
    // 设置内容类型标头
    header("Content-Type: image/jpeg");
    // 输出图像数据
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    echo $row['data'];
?>

步骤 5:在网页上显示图片

要在网页上显示图片,我们可以使用 HTML"img"标签,并将"src"属性设置为输出图片数据的 PHP 脚本的 URL。

以下是显示 ID 为 1 的图片的示例 HTML 代码:

<img src="display.php?id=1" />

页面加载时,会调用"display.php"脚本,并将 ID 参数设置为 1,并将图像数据以二进制形式输出,并通过"img"标签显示。

总结

使用 PHP 将图像上传到数据库并显示在网页上是一个简单的过程,只需创建一个包含 BLOB 列的数据库表、创建一个 HTML 表单来上传图像、创建一个 PHP 脚本来处理上传的图像并将其存储在数据库中、创建一个 PHP 脚本来从数据库中检索图像数据并将其以二进制形式输出,最后使用 HTML"img"标签将图像显示在网页上。按照这些步骤,开发人员可以轻松地在其 Web 应用程序中实现图像上传和显示功能。


相关文章