IE img标签失败但相同的图像下载确定

时间:2015-03-25 23:01:32

标签: php html internet-explorer

在提供图片时,我正在为我的私人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%的时间可以工作?我错过了标题中的内容(或其他内容)吗?

2 个答案:

答案 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

这里有两个快速猜测

  1. 如果您打开file.png,您会看到一些PHP错误,或者是一个呈现img标记的HTML页面(即不是纯二进制图像)

  2. 您的Content-Type不正确。

答案 1 :(得分:0)

如果图像为jpeg,则Internet Explorer使用mime类型image/pjpeg。您对IE使用pjpeg,对其他浏览器使用jpeg

header("Content-Type: image/pjpeg");