【问题标题】:How to download an XML without the browser opening it in another tab如何在没有浏览器在另一个选项卡中打开 XML 的情况下下载 XML
【发布时间】:2011-04-21 02:50:33
【问题描述】:

我有一个要下载的 xml 文件。 大家都知道,当我提供以下链接时

<a href="some.xml">Downlad XML</a>

XML 将在显示它的新选项卡中打开。 但是我想知道是否有办法,这可以像其他文件一样下载,例如 .zip 文件

【问题讨论】:

  • 需要在服务器端完成。您是否可以访问服务器端代码,如果可以,是 PHP 还是什么?
  • 你是客户端还是服务器?你的问题很模棱两可。

标签: xml browser download href


【解决方案1】:

在尝试了很多解决方案之后,这对我有用。

尝试为文件链接提供一个虚拟参数,如下所示。

<a href="http://link/to/the/file.xml?dummy=dummy" download>Download Now</a>

【讨论】:

【解决方案2】:

有一个名为 Content-Disposition 的 HTTP 标头,在RFC1806 中定义如下:

2.1 内联处置类型

如果打算将正文部分标记为inline 显示时自动显示 的消息。内联正文部分应按中的顺序呈现 它们发生的情况,受制于 多部分消息的正常语义。

2.2 附件处置类型

可以指定身体部位 attachment 表示他们是 与主体分开 邮件消息,并且它们的显示不应该是自动的,而是 视进一步行动而定 的用户。 MUA 可能会取而代之 向用户展示位图 具有标志性表示的终端 的附件,或者,在 字符终端,带有一个列表 用户来自的附件 可以选择查看或存储。

为了将标头消息放在 xml 文件中,您需要访问服务器端。例如使用 php 的 header 函数,您可以编写如下内容:

header('Content-Disposition: attachment; filename="some.xml"');

如果您无权访问服务器端,您可以尝试我在 Google 上找到的以下 JavaScript 技巧(不确定是否可行):

<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'some.xml');">Save this page</a> 

【讨论】:

  • 所有浏览器都支持吗?
  • 我不能保证所有个浏览器,但如果它们尊重HTTP,它应该可以在大多数浏览器上运行。
【解决方案3】:

我发现只需右键单击网络浏览器并选择“将页面另存为...”即可。

【讨论】:

  • 好的 - 这需要大约 80 次投票!
【解决方案4】:

与上述 Mohd 的解决方案类似,我可以在此处使用 W3 指定的下载属性:http://www.w3schools.com/tags/att_a_download.asp。走这条路线的一个很酷的技巧是,如果下载的文件名与服务器上的文件名不同,你可以指定你想要的文件名。

<a href="http://link/to/the/file.xml" download="downloadedfilename.xml">XML Download Text</a>

【讨论】:

    【解决方案5】:

    使用类似的东西:

    private function sendXml($xml, $label) {
            ob_clean();
            header('Content-type: text/plain; charset=UTF-8');
            header('Content-Disposition: attachment; filename="' . $label . '.xml"');
            echo ltrim($xml);
            ob_flush();
            exit;
        }
    

    【讨论】:

    • 如果您发布代码或 XML,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
    【解决方案6】:

    这是我的 VBA 解决方案。宏将下载 XML 文件,将其保存在宏文件的文件夹中,并在该过程完成后通知用户:

    Sub SaveXMLFromWeb()
    
    Dim XDoc As Object
    Dim XMLpath As String, outPath As String
    
    XMLpath = "http://example.com/examplefile.xml" 'change to your URL
    outPath = ThisWorkbook.Path & "\yourFileName.xml" 'change output file name
    
    Set XDoc = CreateObject("MSXML2.DOMDocument")
    
    With XDoc
        .async = False
        .validateOnParse = False
        .Load (XMLpath)
        .Save (outPath)
    End With
    
    MsgBox ("XML file has been downloaded and saved in the following location:" & String(2, vbLf) & outPath)
    
    End Sub
    

    【讨论】:

      【解决方案7】:

      只需在锚标签中添加“下载”属性

      <a href="some.xml" download >Downlad XML</a>
      

      【讨论】:

        猜你喜欢
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-30
        • 2015-02-20
        • 2015-11-03
        相关资源
        最近更新 更多