在提供图片时,我正在为我的私人php CMS感到最近的问题。我觉得(但不能确认)这是几天前工作的,但现在还没有(注意我记得当时和现在之间的大量Windows更新)。
当我运行类似以下HTML的内容时:
<IMG BORDER=1 SRC='https://my....site.com/myPHPDocument.php?d=23362'>
<BR>(<a href='https://my....site.com/myPHPDocument.php?d=23362'>Click here to see full size</a>)
然后在IE中我得到了[X]图像错误图标,但是当我为同一页面运行Chrome时,我看到我的图片确定
另一个奇怪的事情是,当我在IE中查看我网站上的其他图片时,标签中的所有图片都没有出现...有些没问题......所以它不像渲染代码完全没有错。
用于传递图像的PHP是:
header("Pragma: ");
header("Content-type:".$extn);
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header('Content-Length: '.filesize($filenm));
header("Content-Disposition:attachment;filename=$externalNm");
if ( file_exists($filenm) ) {
$bufferlength = 65536;
$fp = fopen($filenm, "r");
while (!feof($fp))
{
$buffer = fread($fp, $bufferlength);
echo $buffer;
flush();
}
fclose($fp);
}
flush();
die();
我已经在IE9,10和11上尝试了这个,他们都显示了[X]。是否有可能IE已经收紧了过去100%工作的东西,现在我发现只有30%的时间可以工作?我错过了标题中的内容(或其他内容)吗?
答案 0 :(得分:0)
我开始通过从等式中移除浏览器来进行调查。 curl
命令行程序是调试这些问题的绝佳资源。首先,您可以使用-I
选项
curl -I https://my....site.com/myPHPDocument.php?d=23362
然后,您可以使用它来下载实际文件并检查正在下载的内容。
curl https://my....site.com/myPHPDocument.php?d=23362 > file.png
这里有两个快速猜测
如果您打开file.png
,您会看到一些PHP错误,或者是一个呈现img标记的HTML页面(即不是纯二进制图像)
您的Content-Type
不正确。
答案 1 :(得分:0)
如果图像为jpeg
,则Internet Explorer使用mime类型image/pjpeg
。您对IE使用pjpeg
,对其他浏览器使用jpeg
。
header("Content-Type: image/pjpeg");