【问题标题】:PHP generated XML file to load correct file type in the save as dialogPHP 生成 XML 文件以在另存为对话框中加载正确的文件类型
【发布时间】: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 这就是为什么它只是一个旁注;)

标签: php xml file-type save-as


【解决方案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]
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多