Не удается отобразить изображение BLOB-объекта из базы данных с помощью PHP

Я не могу заставить свой браузер отображать изображение из базы данных (хранится как большой двоичный объект). Я пробовал header("Content-type: image/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
));

person joseph chai    schedule 06.02.2015    source источник
comment
Я пробовал заголовок (тип содержимого: изображение/jpeg); и echo '‹img src=data:image/jpeg;base64,'.base64_encode($image).'/›';   -  person joseph chai    schedule 06.02.2015


Ответы (1)


Вы не должны использовать addlashes() при сохранении данных изображения в вашей БД. Лучшей альтернативой является вставка данных изображения с помощью base64_encode() и base64_decode() при выводе. Простой поиск найдет множество хороших ответов на этот и подобные вопросы.

person Geoff Davis    schedule 06.02.2015
comment
Так это были аддслеши!! СПАСИБО БОЛЬШОЕ ОМГ! - person joseph chai; 06.02.2015