PHP生成的XML不能在IE中下载
我有一个XML脚本生成的PHP脚本与mod_rewrite运行。 IE打开提要确定,但我无法获得它将文件保存到磁盘或导入到Excel。PHP生成的XML不能在IE中下载
我试图在URL访问文件类似于:
http://domain.com/download/export.xml
这被写入到下载PHP脚本,而不是实际的XML文件。
设置标头下面之后,它仍然不可能得到IE浏览器来保存文件。另外,因为它不能显示纯文本,所以将&粘贴到记事本中将不起作用,因为IE会对XML进行各种样式更改。
<?php
header("Content-type: text/xml");
header('Content-Disposition: attachment; filename="QuoteExport_'.$quoteDate.'_'.$quoteSlot.'.xml"');
有没有人知道解决方案?谢谢。
编辑: 感谢您的帮助迄今。我试过了这些头文件的组合,仍然没有得到我想要的结果。无论我设置什么,IE总是在浏览器中显示它,无法下载。保存功能也不起作用。任何其他想法如何强制IE使用标头将XML保存为文件?
EDIT2:现在的状态是,IE提供了打开/保存选项,但同时试图挽救,有一个弹出说,这是“无法打开此Internet站点。”但与此同时,open选项显示没有问题的内容。
花了很多时间更改标题后,我采取了一种稍微不同的方法。无论我将它们设置为什么,它都不适合我。
无论如何,实施的解决方案是: 当客户端登录到URL(http〜://my-domain.com/downloads/export.xml)时,PHP脚本将生成一个真实的XML文件,其位置与request-URI并将其保存在服务器上,为将来的删除作业安排时间,然后有效地刷新浏览器。然后,第二个请求的mod重写规则将服务于实际文件,然后IE可以正确使用该文件。未来的请求会导致循环再次运行。
微圆顶约做事的方式,但它是最快的方法。另外,我有能力从应用程序的另一部分安排文件操作,使清理工作变得更容易!
反正感谢您的帮助,我确实学到了一件事,或两对标题选项。
要强制IE等浏览器来下载你在这个例子中,指定喜欢特定的头文件:
header("Content-disposition: attachment; filename=\"".$fileName . ".csv\"");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
其他明智的,如果你用文本/ XML,即认为他知道如何显示它和这样做。
您需要设置一个会话参数IE的某些版本。假设你有$my_file_name
和$my_file_contents
集,这里是它会怎样看:
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
session_cache_limiter("public");
}
session_start();
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename=".' $my_file_name '. "');
print($my_file_contents);
(从this article改编)
尝试设置内容类型为application/xml或application /强制下载