14

所以我的最后一个问题是如何从搜索中显示我的 techID:

我试图让我的“详细信息”页面引用通过 techID 链接的服务器的两个单独部分

我的新问题仍在此页面上。我也添加了回声图像。Blob但是在使用和让它显示我的图像而不是二进制 JPEG 数据时遇到问题。我一直在尝试找到另一个实例,但找不到任何可以解决我的错误的实例。

//Header ('Content-type: image/jpeg')
echo "<dt><strong>Technician Image:</strong></dt><dd>" . '<img src='.$row2['image'].' width="290" height="290">' . "</dd>";

$query_Recordset2 = "SELECT * FROM technician WHERE techID=" . $row1["techID"] ;
$Rs2 = mysql_query($query_Recordset2) or die(mysql_error());

到目前为止,我对上一个问题所做的唯一更改是(显然包括我得到的有效修复)。

我不明白的是在哪里以及如何让'Content-type: image/jpeg'我的页面识别正在链接的图像是它的 MIME TYPE image/jpeg

我在我的页面上看到的是这个

技术员图片:“E��j��i`=7f$D��o”��������b���Ckkc��R��^M�;n~��0&m)J�� R��E)JDR��E)JDR��E)JDR��E)JDR��E)JDR��E)JDSjR��)��+��N��.R,u��� �i��n9,����QX~ ����{(����̮�:����2�12��"��aV7�6���{���LP[�W� �������R$+���LMc'hM�5�o�PA����|���������.8��E��ģ��Rn��1�[� ��{��3>�rY��X�ۜ; �� Ǖ����u���z��'�vf��N葟��z�Q�����k��3��� O�������?S�<em>��,N�����[{+D���;�'�$�$�&�iJR��)JR��)JR� �)JR��)JR��)JR��)JR��)JR��)JR��)JR��)JR��)JR��)�� width="290" height="290" >

显然我已经删除了一个中间块,所以它不是很大。有一个小的“损坏的图像”框出现在前面,当我右键单击并选择“在新窗口中打开图像”时,它输入的 URL 很简单Content-type:,或者我得到一个带有 url 的禁止访问页面http:// localhost/Sim5Server/Pages/%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%10JFIF%EF%BF%BD%01%02%EF%BF%BD%EF%BF%BDd%EF%BF%BDd%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDC%EF%BF%BD

我在该网址中放置了一个空格,因为它不是互联网链接。

我只使用了普通的 BLOB 类型,因为我只需要它作为小于 64Kb 的小图像

4

4 回答 4

39

在您当前的情况下,您有两个前期选择。

第一个,如果你有很多这样的图像,我不推荐的一个是使用内联 base64 编码。这是通过以下方式完成的:

<img src="data:image/jpeg;base64,<?php echo base64_encode($image); ?>" />

使用现有代码的复制/粘贴版本:

echo '<dt><strong>Technician Image:</strong></dt><dd>'
     . '<img src="data:image/jpeg;base64,' . base64_encode($row2['image']) . '" width="290" height="290">'
     . '</dd>';

第二种方法是创建一个“图像”PHP 文件,该文件将数据库中图像的 ID 作为查询字符串参数并输出图像。因此,您的 HTML 将类似于:

<img src="image.php?id=<?php echo $image_id; ?>" />

您的 PHP 页面看起来类似于:

<?php
$id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
$image = getImageFromDatabase($id); // your code to fetch the image

header('Content-Type: image/jpeg');
echo $image;
?>
于 2012-11-05T04:05:01.797 回答
2

您可以从与文档相同的页面输出图像的唯一方法是使用data uri

echo "<dt><strong>Technician Image:</strong></dt><dd>" . 
     '<img src="data:image/jpeg;base64,'.
      base64_encode($row2['image']).
      '" width="290" height="290">' . "</dd>";
于 2012-11-05T04:04:33.617 回答
2

正确的代码应如下所示。您必须使用 stream_get_contents() 将资源 id 更改为字符串。

<img src="data:image/jpeg;base64,<?php echo base64_encode(stream_get_contents($row2['image'])); ?>" />
于 2015-12-02T15:39:53.433 回答
-1

我认为最好的解决方案是将图像的路径存储在数据库中,而不是将整个图像存储为 BLOB。然后为了在网页上显示图像,将 img 标签的 src 属性设置为存储在数据库中的路径。

于 2012-11-05T04:06:38.080 回答