执行“readfile”时Internet Explorer文件下载错误 - PHP

时间:2010-01-20 10:11:39

标签: php internet-explorer download

我刚将一个Web应用程序移动到Windows服务器并遇到了一些问题。其中之一是 - 应用程序存储数据库表中文件名的列表。当请求下载文件时,它会通过发送正确的标题发送到输出(取决于mime类型,然后是readfile(“document location / filename.extension”);

它在Firefox中工作正常,但如果我尝试在IE中下载它会抛出

  

IE无法下载此文档   www.mysite.com .. IE无法   打开这个网站。请求   文件不可用或不可用   被发现。请稍后再试。

由于它在以前的服务器(非Windows)上工作正常,我试图打印文档位置,它读取有点像C:/Apache/htdocs/FILENAME.ext,我猜这个C:/在IE中引起问题但不是在firefox?

如何让它在IE中正常工作?

由于

更新

我得到了它的工作 在其他人中添加更多标题..我认为前两个对于IE来说更重要(至少现在为我工作:)

header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();

3 个答案:

答案 0 :(得分:1)

有效:

if (strstr($_HTTP_USER_AGENT, "MSIE")) { 
    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: doit-revalider, post-check = 0, pré-check = 0"); 
    header("Content-Type: application de téléchargement; name=\"$sFilename\""); 
    header("Content-Length: $iTaille"); 
    header("Content-Disposition: attachment; filename=\"$sFilename\""); 
    header("Content-Transfer-Encoding: binary"); 
} else { 
    header("Content-Type: application de téléchargement; name=\"$sFilename\""); 
    header("Content-Length: $iTaille"); 
    header("Content-Disposition: attachment; filename=\"$sFilename\""); 
} 

答案 1 :(得分:0)

这个问题已在这里得到解答PHP: Force file download and IE, yet again

答案 2 :(得分:0)

这是否是通过SSL的任何机会?如果是这样,MSIE中存在大量错误,可能会影响您的应用。尝试设置非常短的缓存时间。

如果它在使用相同服务器的Firefox上运行,则问题可能与服务器上的路径无关。虽然要注意(IME)IIS似乎在某些情况下从MSIE客户端(但不是其他客户端)获取授权。