如何在没有浏览器的情况下下载XML而在另一个选项卡中打开它

时间:2010-10-05 04:00:18

标签: xml browser download href

我有一个要下载的xml文件。 众所周知,当我给出以下链接时

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

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

6 个答案:

答案 0 :(得分:12)

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

  

2.1内联处置类型

     

如果打算将身体部分标记为inline,则应将其标记为attachment   显示时自动显示   的消息。内联身体部分应按顺序呈现   他们发生的,受制于   多部分消息的正常语义。

     

2.2附件处理类型

     

可以指定身体部位   header('Content-Disposition: attachment; filename="some.xml"'); 表明他们是   与主体分开   邮件消息,他们的显示不应该是自动的,但是   取决于一些进一步的行动   用户。 MUA可能会改为   呈现位图的用户   终端与标志性的代表   附件,或,   字符终端,列表   用户的附件   可以选择观看或存储。

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

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

如果您无法访问服务器端,您可以尝试以下我发现Google搜索的JavaScript技巧(不确定它是否可行):

{{1}}

答案 1 :(得分:11)

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

尝试为文件链接提供伪参数,如下所示。

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

答案 2 :(得分:3)

I found that just right clicking on the web browser and selecting "Save Page As..." does the work.

答案 3 :(得分:0)

使用类似的东西:

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;
    }

答案 4 :(得分:0)

与上面的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 :(得分:0)

这是我的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