Как отобразить изображение из BLOB-объекта MySQL в PHP (joomla) - PullRequest
1 голос
/ 08 февраля 2011

Я создаю компонент на своем веб-сайте Joomla.Компонент показывает несколько фотографий (не большие, только 8 КБ).фотографии хранятся в BLOB-объекте MySQL.Я могу загрузить фотографии в базу данных Joomla, но не могу отобразить их на веб-сайте.все, что я делаю, показывает только кодировку или пробел.Я пытался создать отдельную страницу, но результат тот же.Вот что я сделал: mycomp - это мой компонент joomla.

admin.mycomp.php

<?php
function showDetail($option)
{
    $db = &JFactory::getDBO();
    $id = mysql_real_escape_string(JRequest::getVar('id'));
    $query = "select id,myphoto from jos_myphotos where id = ".$id;
    $db->setQuery($query);
    $rows = $db->loadObjectList();
    HTML_myphoto::showPhoto($rows,$option);
}     
?>

admin.mycomp.html.php

<?php
class HTML_myphoto
{
   ...
   function showPhoto($row,$option)
   {
      ...
      header("Content-type: image/jpeg");
      echo $row->myphoto;  //this will show some encoding character
      echo base64_decode($row->myphoto);  //this will show blank page
      //change echo with print get the same result.
      ...
   }
   ...
}

Iпопытался создать отдельную страницу, например: admin.mycomp.html.php

<?php
class HTML_myphoto
{
...
function showPhoto($row,$option)
{
    ...
?>
    <img src="show_image.php?myphoto=<?php echo $row->myphoto;?>" width=200 height=300>
<?php   
    ...
}
...
}

show_image.php

<?php
     $myphoto = (isset($_GET['myphoto'])) $_GET['myphoto'] : false;
     if($myphoto)
     {
         header("Content-type: image/jpeg");
         echo $myphoto;  //this will show some encoding character
         echo base64_decode($myphoto);  //this will show blank page
         //change echo with print get the same result.
     }
?>

результат такой же.

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Извините, вы пропустили несколько строк из show_image.php ?!Потому что $myphoto это просто идентификатор фотографии.Вы не можете base64_decode удостоверение личности.

1 голос
/ 08 февраля 2011

Я думаю, что у вас есть 2 варианта:

  1. Либо вы создаете тег изображения с его источником в файле PHP, получая только параметр ID и извлекая строку фотографии в БД и повторяя ее.
  2. Или вы напрямую отражаете строку вашей фотографии в своем теге:

    <img src="<?php echo base64_decode($myphoto); ?>" />
    

РЕДАКТИРОВАТЬ

Я простопроверил в старом приложении, где я храню значки в БД.Вам не нужно base64_decode, когда вы отображаете свое изображение в строке (мой вариант 2).
Итак, к вашему сведению, это изображение работает:

<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAACkElEQVQ4y42TTWyUZRSFn/e+n6W00E4l9ScSCZGODXFLIIZENyZu1ITEGBdE3ejGVQksunDlwoUrE0ICCQuomZAYF4YNNvEPlFpjiJRgKq10HDKdmVJxEOh0vu+9h0UrMSyAk9zVOffczXPRI8hdciVNTZ/X6MjLOnrkK3XTLbk64lEK5FIhaf87HyqznYKy5qsLyuUPL/D1OXzkC8U4IhhViC9o7OAnSkkKksQDVG81GR//iAvTbS7OXIQQ1p0Oc3O/YlCAAAcSQIHIEc43Z8/z6r5xfrsiBp9+ArK4FgprNye//oEMDIJDMBDU6jc4d/YXzpz5kcuzC5SGBvBkoMT257ah5FTn/4Qgpqd+InM3LEDr+j8cO/45pyrnmLk0w0uv7KV/cIDCI4GIhUAgY3h4C9W5Kma9LF//l2xpqc33301xcuJLTp+ehLiJbSNlcpxoEanAolF4okB0lRAiuVOt1cje/+AAly8tcHWhDnEDeAfXKo/FTbg7ZLdwCrDI0PAAK7fvQATkYIbN/l4jWh8pAb4BrJ/abI32301MXULKoIhE9bKxt8RKJ4D1gXpIitj+d19j6PGN7CiXQavgHYir3G5fY+tT/Wx/cgulnh6su0JYvUPodiHvAGJz32YoJC222qo1lvTH1b906NBngq06cPBjFZKkXIuNmhZbN3RlvqUTlUnt2fumsGc0NvapkJLcpeRrzF+r31R5dLd2PP+i6s3if//gcndJUqPRUKVSUbPZFCnlkpJcSWmd+dffeE/BntWJk9/eW7q/RJJSSjIzQxKBhIUcgN17dhFCxsREheXlZSStZUIghEBRFACYGRlwz3Q5FuDtt/Yx/fMFSqVB8jwnrPP/Xy7LMtwdM+Mu+2gfA7SP0igAAAAASUVORK5CYII=" style="margin-right: 5px; vertical-align: middle;" class="bbns_itemDragger">

И оно хранится в моей БД следующим образом (закодировано в base64):

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAACkElEQVQ4y42TTWyUZRSFn/e+n6W00E4l9ScSCZGODXFLIIZENyZu1ITEGBdE3ejGVQksunDlwoUrE0ICCQuomZAYF4YNNvEPlFpjiJRgKq10HDKdmVJxEOh0vu+9h0UrMSyAk9zVOffczXPRI8hdciVNTZ/X6MjLOnrkK3XTLbk64lEK5FIhaf87HyqznYKy5qsLyuUPL/D1OXzkC8U4IhhViC9o7OAnSkkKksQDVG81GR//iAvTbS7OXIQQ1p0Oc3O/YlCAAAcSQIHIEc43Z8/z6r5xfrsiBp9+ArK4FgprNye//oEMDIJDMBDU6jc4d/YXzpz5kcuzC5SGBvBkoMT257ah5FTn/4Qgpqd+InM3LEDr+j8cO/45pyrnmLk0w0uv7KV/cIDCI4GIhUAgY3h4C9W5Kma9LF//l2xpqc33301xcuJLTp+ehLiJbSNlcpxoEanAolF4okB0lRAiuVOt1cje/+AAly8tcHWhDnEDeAfXKo/FTbg7ZLdwCrDI0PAAK7fvQATkYIbN/l4jWh8pAb4BrJ/abI32301MXULKoIhE9bKxt8RKJ4D1gXpIitj+d19j6PGN7CiXQavgHYir3G5fY+tT/Wx/cgulnh6su0JYvUPodiHvAGJz32YoJC222qo1lvTH1b906NBngq06cPBjFZKkXIuNmhZbN3RlvqUTlUnt2fumsGc0NvapkJLcpeRrzF+r31R5dLd2PP+i6s3if//gcndJUqPRUKVSUbPZFCnlkpJcSWmd+dffeE/BntWJk9/eW7q/RJJSSjIzQxKBhIUcgN17dhFCxsREheXlZSStZUIghEBRFACYGRlwz3Q5FuDtt/Yx/fMFSqVB8jwnrPP/Xy7LMtwdM+Mu+2gfA7SP0igAAAAASUVORK5CYII=
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...