无法使用 PHP 显示数据库中的 blob 图像

Posted

技术标签:

【中文标题】无法使用 PHP 显示数据库中的 blob 图像【英文标题】:Cannot display blob image from database using PHP 【发布时间】:2015-04-06 03:35:30 【问题描述】:

我无法让我的浏览器显示数据库中的图像(存储为 blob)。我努力了 header("内容类型:图片/jpeg"); 回声'';

但还是无法在浏览器上显示。

getImage.php

<?php
require_once 'php-activerecord/ActiveRecord.php';

ActiveRecord\Config::initialize(function($cfg) 
    $cfg->set_model_directory('models');
    $cfg->set_connections(array(
        'development' => 'mysql://root:mysql@localhost/BondingTogether'));
);

$id = addslashes($_REQUEST['id']);

$row = food::find_by_foodid($id);
$image = $row->image;
//$image = ""


//header("Content-Type: image/jpg");
header("Content-type: image/jpeg");
//echo '<img src="data:image/jpeg;base64,'.base64_encode($image).'"/>';
echo $image;
//echo base64_decode($image);

添加到数据库

<?php

require_once 'php-activerecord/ActiveRecord.php';

ActiveRecord\Config::initialize(function($cfg) 
    $cfg->set_model_directory('models');
    $cfg->set_connections(array(
        'development' => 'mysql://root:mysql@localhost/BondingTogether'));
);

//files
$file = $_FILES['foodimage']['tmp_name'];
if (!isset($file)) 
 
else 
    //$image = addslashes(file_get_contents($_FILES['foodimage']['tmp_name']));
    $image_name = addslashes($_FILES['foodimage']['tmp_name']);
    $image_size = getimagesize($_FILES['foodimage']['tmp_name']);

    if ($image_size == FALSE) 
        die('Please select an image file');
     else 

    

$image = addslashes(file_get_contents($_FILES['foodimage']['tmp_name']));
//$image = chunk_split(base64_encode(file_get_contents("image.jpg")));

Food::create(array(
    'xcoord' => $_POST['XCoord']
    , 'ycoord' => $_POST['YCoord']
    , 'title' => $_POST['title']
    , 'category' => $_POST['cat']
    , 'description' => $_POST['desc']
    , 'image' => $image
));

【问题讨论】:

我试过 header("Content-type: image/jpeg");和 echo ''; 【参考方案1】:

在您的数据库中存储图像数据时,您不应该使用 addlashes()。更好的选择是使用 base64_encode() 插入图像数据,并在输出时使用 base64_decode() 插入图像数据。一个简单的搜索就能找到很多关于这个问题和类似问题的好答案

【讨论】:

原来是addlashes!!非常感谢 OMG!

以上是关于无法使用 PHP 显示数据库中的 blob 图像的主要内容,如果未能解决你的问题,请参考以下文章

PHP / MySQL - 显示来自blob的图像[重复]

通过php连接数据库后无法显示存储在MySQL数据库中的图像

PHP脚本显示图像BLOB执行了两次?

如何使用 jquery、ajax 和 php 在数据库中保存图像文件 (BLOB)

显示存储为 MySQL 数据库中 BLOB 数据的所有图像

使用 PHP 显示数据库中的图像 [重复]