当前位置:首页 > 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;

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

php实现插入图片

chmod -R 755 uploads/

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

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…

php实现des加密

php实现des加密

DES 加密实现方法 在 PHP 中实现 DES 加密可以通过内置的 mcrypt 或 openssl 扩展完成。由于 mcrypt 已在 PHP 7.2 中废弃,推荐使用 openssl 扩展。…