0

我发现很多帖子都描述了同样的问题,但我尝试的一切都失败了。对于我正在制作的个人资料页面,人们可以上传 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 “No image”,但似乎如果我做的不是 echo $row[x] 其他任何事情,它就是行不通的。当我尝试以 HTML 格式显示图像时,它工作正常,因此文件名是正确的。

我的想法不多了,所以也许有人可以帮忙?

4

2 回答 2

1

您的代码的问题在于您发送 HTML 以嵌入图像,而实际上,您应该发送回图像数据。您可以通过将用户重定向到“noImage.jpg”来解决此问题,这样用户将从请求中获取图像,一切都会好起来的:)

代码可能如下所示:

if ($row['Foto4'] == NULL){
    header('Location: /image/noImage.jpg');
} else {
    echo $row['Foto4'];
}
于 2013-11-11T21:40:13.230 回答
0

如果您使用 content type image/jpeg,浏览器需要图像的原始二进制数据。相反,你给它 HTML 代码。

您可以改为使用Location-header,它告诉浏览器打开另一个地址。

header("Location: /img/noImage.jpg");

请记住,如果使用此方法,您将无法输出任何其他数据或写入任何其他标题。

于 2013-11-11T21:39:59.330 回答