PHP 生成 XML 文件以在另存为对话框中加载正确的文件类型
Posted
技术标签:
【中文标题】PHP 生成 XML 文件以在另存为对话框中加载正确的文件类型【英文标题】:PHP generated XML file to load correct file type in the save as dialog 【发布时间】:2010-07-04 11:56:01 【问题描述】:我有一个名为dynamicxml.php
的PHP 文件,它运行一堆代码,从数据库中提取数据并创建一个XML 文件。当我右键单击并保存dynamicxml.php?var=test
的链接时,我需要对话框选择 xml 作为默认文件类型并将文件重命名为 var.xml:
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<blah><blah_blah>'.$_GET['var'].'</blah></blah>';
单击链接时,它会在浏览器中加载 xml 文件。保存该页面会将其保存为 var.xml。但是右键单击并保存它会将其保存为 dynamicxml.php 和 php 文件类型。
我应该使用 htaccess 操作还是有其他替代方法?
【问题讨论】:
(sidenote) 考虑使用 DOM 而非字符串连接来生成 XML 文件。这可以确保 XML 有效。 我不认为这是一个有效性问题 @kgb 这就是为什么它只是一个旁注;) 【参考方案1】:您不应该尝试这样做,因为浏览器通过“另存为..”进行保存的工作方式不同。例如 chrome 和 opera 会将您的文件保存为 .htm(可能)。我看到了两种可能的方法来解决这种情况(我不会做任何一种):
设置 apache 将 xml 处理为 php。 AddType text/xml php
创建一个重写规则将所有内容从某个目录中的 *.xml 重定向到 dynamicxml.php
RewriteEngine On
RewriteCond %REQUEST_FILENAME -s [OR]
RewriteCond %REQUEST_FILENAME -l [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^.xml$ - [NC,L]
RewriteRule ^.xml$ dynamicxml.php [NC,L]
【讨论】:
以上是关于PHP 生成 XML 文件以在另存为对话框中加载正确的文件类型的主要内容,如果未能解决你的问题,请参考以下文章
如何创建“另存为”和“加载”对话框以在 javascript 中创建/加载 json 文件/数据?