php - 如何在 PHP (joomla) 中显示来自 mysql blob 的图像

标签 php mysql joomla

我在我的 joomla 网站中创建了一个组件。该组件显示一些照片(不大,只有 8KB)。照片存储在 mysql blob 中。我可以将照片上传到 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.
      ...
   }
   ...
}

我试着创建一个像这样的单独页面: 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   
    ...
}
...
}

显示图像.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.
     }
?>

结果是一样的

最佳答案

我想你有两个选择:

  1. 或者您在 PHP 文件中制作一个图像标签,其来源仅接收一个 ID 参数,并在数据库中检索照片的字符串并回显它。
  2. 或者您直接在标签中回显照片的字符串:

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

编辑

我刚刚 checkin 了一个旧应用程序,我将网站图标存储在数据库中。内联显示图像时不需要 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=

关于php - 如何在 PHP (joomla) 中显示来自 mysql blob 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931845/

相关文章:

php - updateOrCreate 在 laravel 中导致 ErrorException

css - 当我点击菜单时,某些模块在我的网站上向下移动?为什么?

php - WordPress URL 更改失败

php - 如何在mysql中没有group by子句的情况下计算mysql中的总计

php - 如何在计算闰年的同时使用 DateTime 计算自年初以来的天数?

mysql - MariaDB 安装失败,没有可用的软件包

php - Mysql错误: A connection attempt failed because the connected party did not properly respond

mysql - Joomla 1.6 mysql 菜单问题(执行时间 < 10 分钟)

javascript - 在javascript中获取站点根url

php - 在脚本末尾在网站上绘制图像