当前位置:首页 > PHP

php实现插入图片

2026-02-15 21:20:08PHP

插入图片到数据库

使用PHP将图片插入数据库通常涉及将图片转换为二进制数据(BLOB)存储。以下是一个完整示例:

<?php
// 数据库连接配置
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 获取上传的图片文件
    $image = file_get_contents($_FILES['image']['tmp_name']);

    // 准备SQL语句
    $stmt = $conn->prepare("INSERT INTO images (image_data, image_name) VALUES (?, ?)");

    // 绑定参数并执行
    $stmt->bindParam(1, $image, PDO::PARAM_LOB);
    $stmt->bindParam(2, $_FILES['image']['name']);
    $stmt->execute();

    echo "图片上传成功";
} catch(PDOException $e) {
    echo "错误: " . $e->getMessage();
}
$conn = null;
?>

存储图片到文件系统

更常见的做法是将图片存储在服务器文件系统中,数据库中只保存路径:

<?php
// 上传目录
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);

// 检查是否为真实图片
$check = getimagesize($_FILES["image"]["tmp_name"]);
if($check === false) {
    die("文件不是图片");
}

// 检查文件大小(限制为5MB)
if ($_FILES["image"]["size"] > 5000000) {
    die("文件太大");
}

// 允许特定文件格式
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") {
    die("只允许JPG, JPEG, PNG格式");
}

// 尝试上传文件
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
    // 将路径存入数据库
    $stmt = $conn->prepare("INSERT INTO images (image_path) VALUES (?)");
    $stmt->execute([$target_file]);
    echo "图片上传成功";
} else {
    echo "上传失败";
}
?>

显示存储的图片

从数据库显示BLOB图片:

<?php
$stmt = $conn->prepare("SELECT image_data FROM images WHERE id = ?");
$stmt->execute([$image_id]);
$image = $stmt->fetch(PDO::FETCH_ASSOC);

header("Content-Type: image/jpeg");
echo $image['image_data'];
?>

显示文件系统中的图片:

<?php
$stmt = $conn->prepare("SELECT image_path FROM images WHERE id = ?");
$stmt->execute([$image_id]);
$image = $stmt->fetch(PDO::FETCH_ASSOC);

echo '<img src="'.$image['image_path'].'" alt="存储的图片">';
?>

安全注意事项

验证文件类型时应使用服务器端检查,而非仅依赖客户端检查:

$allowed_types = ['image/jpeg', 'image/png'];
$detected_type = mime_content_type($_FILES['image']['tmp_name']);

if(!in_array($detected_type, $allowed_types)) {
    die("不允许的文件类型");
}

为上传文件生成唯一文件名,避免覆盖和安全问题:

$new_filename = uniqid().'.'.$imageFileType;
$target_file = $target_dir . $new_filename;

设置上传目录权限为不可执行:

chmod -R 755 uploads/

php实现插入图片

标签: 插入图片php
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HT…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…