我刚将一个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();
答案 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客户端(但不是其他客户端)获取授权。