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

All*_*loi 17 xml browser download href

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

<a href="some.xml">Downlad XML</a>
Run Code Online (Sandbox Code Playgroud)

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

Eug*_*ota 13

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

2.1内联处置类型

inline如果要在显示消息时自动显示,则应标记正文部分.内联正文部分应按它们出现的顺序呈现,这取决于多部分消息的正常语义.

2.2附件处理类型

可以指定bodyparts attachment以指示它们与邮件消息的主体分开,并且它们的显示不应该是自动的,而是取决于用户的一些进一步动作.MUA可以改为向位图终端的用户呈现附件的图标表示,或者在字符终端上呈现用户可以从中选择用于查看或存储的附件列表.

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

header('Content-Disposition: attachment; filename="some.xml"');
Run Code Online (Sandbox Code Playgroud)

如果你没有访问服务器端的权限,你可以尝试以下我发现谷歌搜索的JavaScript技巧(不确定它是否可行):

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


Moh*_*jib 12

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

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

<a href="http://link/to/the/file.xml?dummy=dummy" download>Download Now</a>
Run Code Online (Sandbox Code Playgroud)


小智 6

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


小智 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;
    }
Run Code Online (Sandbox Code Playgroud)