5

我试图将 MySQL DB 中存储的图像(blob 数据)链接到 PHP,但我唯一实现的是整个字符页面。这就是我所做的:

$query = "SELECT image FROM uploads WHERE id = {$id}";
$image_array = mysql_query($query, $connection);
$row = mysql_fetch_array($image_array);
$image = $row['image'];

echo $image;
// echo base64_decode($content);

这显示了原始数据的存储方式。我想将它链接到 HTML 标记或至少在页面上显示它,在那里我显示了很多其他的东西所以 header('Content-type: image/png'); 对我来说不是解决方案。

有什么建议吗?

4

3 回答 3

8

要正确显示图像,您只需在Content-type: image/png之前放置一个标题echo

header("Content-type: image/png");
echo (base64_decode($row['image']));

如果您想放置在图像标签中,您只需要使用此代码

echo '<img src="data:image/png;base64,' . $row['image'] . '" />'; 
于 2013-06-07T13:24:18.253 回答
1

您需要提供正确的标题,否则页面将不知道您发送的是什么。

// define results into variables 
$name=mysql_result($result,0,"file_name"); 
$size=mysql_result($result,0,"file_size"); 
$type=mysql_result($result,0,"file_type"); 
$content=mysql_result($result,0,"file_stream"); 

// give our picture the proper headers...otherwise our page will be confused 
header("Content-Disposition: attachment; filename=$name"); 
header("Content-length: $size"); 
header("Content-type: $type"); 
echo $content; 
于 2013-06-07T13:23:56.460 回答
0

您应该使用称为“内联图像”的东西。使用此代码在页面上显示图像,假设 $image 变量包含 base64 编码数据:

<img src="data:image/png;base64,<?php echo $image; ?>" alt="Larry" />

来源:https ://en.wikipedia.org/wiki/Data_URI_scheme

于 2013-06-07T13:24:28.637 回答