我发现很多帖子描述了同样的问题,但我尝试过的一切都失败了。 对于个人资料页面,我让人们可以上传4张图片。当没有图片可用时,我想显示默认图片。我的完整代码就是这样:
$id = $_GET['ID'];
$link = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
$sql = "SELECT * FROM profielen WHERE ID = $id";
$result = mysql_query("$sql");
$row = mysql_fetch_assoc($result);
mysql_close($link);
header("Content-type: image/jpeg");
if ($row['Foto4'] == NULL){
//echo '<img src="/img/noImage.jpg" />';
echo $row['Foto5'];
}
else {
echo $row['Foto4'];
}
在这种形式下代码有效,所以我知道if语句是正确的。 当我尝试取消注释注释行时,它会显示一个断开的链接作为图像。
我尝试使用双引号然后转义img标记中的双引号。我还尝试将其称为变量,并且在img-path之前没有/。并且还试图说回声“没有图像”,但似乎如果我做除了echo $ row [x]以外的任何事情它只是不起作用。当我尝试在HTML中显示图像时,它工作正常,因此文件的名称是正确的。
我的想法已经不多了,所以也许有人可以提供帮助?
答案 0 :(得分:1)
您的代码的问题在于您正在发送HTML以嵌入图像,而实际上,您应该将图像数据发回。你可以通过将用户重定向到“noImage.jpg”来解决这个问题,这样用户就可以从请求中获得一个图像,一切都会好的:)
此代码可能如下所示:
if ($row['Foto4'] == NULL){
header('Location: /image/noImage.jpg');
} else {
echo $row['Foto4'];
}
答案 1 :(得分:0)
如果您使用内容类型image/jpeg
,则浏览器需要图像的原始二进制数据。相反,你给它HTML代码。
您可以使用Location
- 标头,告诉浏览器打开另一个地址。
header("Location: /img/noImage.jpg");
请记住,如果使用此方法,则无法输出任何其他数据或写入任何其他标题。