Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP(joomla)中显示mysql blob中的图像_Php_Mysql_Joomla - Fatal编程技术网

如何在PHP(joomla)中显示mysql blob中的图像

如何在PHP(joomla)中显示mysql blob中的图像,php,mysql,joomla,Php,Mysql,Joomla,我在joomla网站上创建了一个组件。组件显示一些照片(不是很大,只有8KB)。照片存储在mysql blob中。我可以上传照片到joomla数据库,但我不能在网站上显示它。无论我做什么,它只显示一些编码字符或空白。我试图创建一个单独的页面,但结果是一样的。以下是我所做的: mycop是我的joomla组件 admin.mycop.php <?php function showDetail($option) { $db = &JFactory::getDBO();

我在joomla网站上创建了一个组件。组件显示一些照片(不是很大,只有8KB)。照片存储在mysql blob中。我可以上传照片到joomla数据库,但我不能在网站上显示它。无论我做什么,它只显示一些编码字符或空白。我试图创建一个单独的页面,但结果是一样的。以下是我所做的: mycop是我的joomla组件

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

我的照片;?>“宽度=200高度=300>

结果是一样的。

我想你有两个选择:

  • 要么在PHP文件中创建一个图像标记,其源代码仅接收ID参数,然后在DB中检索照片的字符串并进行回显
  • 或者直接在标签中回显照片的字符串:

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

    对不起,你跳过show_image.php中的一些行了吗?!
    因为
    $myphoto
    只是照片的id。你不能
    base64\u解码
    id。

    当我看到show\u image.php时,你似乎是通过URL发送整个文件。这个文件应该只接收一个id,从数据库获取内容并回显一次(你在这里回显两次)您确定,二进制图像数据在您的数据库中是base64编码的吗?要么将blob作为src,要么像这样调用图像:id;?>“…如何将图像保存到blob?@Distdev:您可以将图像保存为string@Nabab如果我使用Base64解码($MyPoto),它将显示空白页。如果我删除base64_decode函数,它将显示一些编码字符,我会说这意味着当你将文件字符串放入数据库时,你没有base64_encode(),并且你不能在没有编码的情况下将原始二进制数据存储在blob中。@Nabab我尝试了你编辑的代码(复制和粘贴),它可以工作,但如果我这样使用:“>它仍然显示编码字符。我确信这些图像存储在数据库中。我可以从mysql浏览器中查看图像。我们如何知道blob字段mysql数据库中的编码是什么?在将图像插入数据库时,我没有对其进行编码。由于BLOB是二进制的,我想您可以按原样存储它们,但必须使用base64_encode()对其进行回显-因为HTML不是二进制的。不,在这种情况下,$myphoto是图像的整个字符串(!)
    <img src="<?php echo base64_decode($myphoto); ?>" />
    
    <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">
    
    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=