我正在使用PHP处理商店应用程序,并且在显示存储在MySQL数据库上时遇到问题。我将图像存储为中BLOB
类型,我确信图像在上传到数据库期间和之后都已正确格式化。 (我可以直接从数据库下载图像并将其视为jpeg图像)。
但是,如果我尝试在网页中显示我的图像,我会收到破碎的图像图标。我能够从sql中显示图片的唯一方法是使用base64编码,但这不是我想要使用的方法。
这是我的代码。它从数据库中提取所有产品,并在表格行中显示其ID,描述和图像。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>Image Test</title>
<body>
<?php
include("mylibrary/login.php");
login();
$query = "SELECT prodid, description FROM products";
$result = mysql_query($query) or die(mysql_error());
echo "<table width=\"50%\" cellpadding=\"1\" border=\"1\">\n";
echo "<tr><td>Product ID</td><td>Description</td><td>Image</td></tr>\n";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$prodid = $row['prodid'];
$description = $row['description'];
echo "<tr><td>$prodid</td><td>$description</td>\n";
echo "<td><img src=\"showimage.php?id=$prodid\" width=\"80\" height=\"60\"></td></tr>\n";
}
echo "</table>\n";
?>
</body>
</html>
这是showimage.php
代码。 showimage.php
文件仅显示损坏的图像。我查看了图像的原始数据,它们的格式都正确。 :
<?php
//header('Content-Type: image/jpeg');
$prodid = $_GET['id'];
$con = mysql_connect("localhost", "test", "test") or die('');
mysql_select_db("store", $con);
$query = "SELECT picture from products WHERE prodid=$prodid";
$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$picture = $row['picture'];
header("Content-type: image/jpeg");
echo $picture;
?>
我非常感谢帮助理解为什么这段代码不起作用。我在这个网站和谷歌搜索中阅读了很多文章,他们都说这个代码应该有效。
作为旁注,我不想使用base64编码方法,因为我正在上课,这是我们正在使用的方法(我也是唯一遇到此问题的人) 。
答案 0 :(得分:0)
通常,代码看起来几乎没问题。图片的问题是,它必须完全正确,否则无法正确显示。请尝试以下方法:
如果这没有帮助,请删除内容类型的标题,并通过调用图片网址查看实际返回的内容,并将数据与原始图像进行比较。这样您就可以确认图片数据是正确的还是差异在哪里。