使用readfile和file_get_contents时出现的损坏图像问题

5

我正在尝试使用一个函数来使其工作:

<img src='login.php?image=ind_legend.jpg'>

但是我无法通过函数来放置图片。我回退了几步,只尝试了代码的这一部分:

<?php
$file = "http://localhost/sales/test.jpg";
header('Content-type: image/jpeg');
readfile($file);
?>

或者使用这个函数:
echo file_get_contents($source);

但事实上,我只得到了一个损坏的图像叉(IE),或者在Firefox中什么都没有显示。
我会感激任何建议。
提前致谢。
4个回答

18

在使用readfile()函数之前,使用PHP的ob_clean()函数。


这是一种解决问题的方法,实际的解决方案在被接受的答案中。 - Gall Annonim

6
你的PHP脚本中肯定有一些空格,或者在你的<?php开头标记之前看不见的UTF-8 BOM。使用十六进制编辑器查找。

为了进一步调试,请直接在浏览器中打开图像URLhttp://localhost/login.php?image=ind_legend.jpg,保存文件。然后将其与原始JPEG进行比较。


2

如先前所述,您可能有一些空格。我建议您使用下面的代码替换整个文件。删除结束php语句可以消除任何额外的空格:

<?php
$file = "http://localhost/sales/test.jpg";
header('Content-type: image/jpeg');
readfile($file);

0

首先将您的浏览器指向http://youraddress/login.php?image=ind_legend.jpg并检查结果。

也许文件 /sales/test.jpg 已损坏或您未启用 readline 的 http:// wrapper

最后,通过您选择的浏览器的“另存为图像”上下文菜单选项保存损坏的图像,并尝试使用文本编辑器打开它。如果您已启用错误消息(如果有),我不会感到惊讶。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接