JavaScript 文件下载

3

我需要下载一个名为test.xml的文件,并在单击下载按钮时允许/提示用户保存该文件。该文件位于url“http://localhost/test/test.xml”中。

我已经添加了HTML代码

<input type=button value="Download" onclick='javascript:download()/>

JavaScript代码是

function download() {
   var url = "http://localhost/test/test.xml";
       window.open(url, 'Download');
}

但这会在新窗口中打开页面。我该如何提示下载并保存文件?任何反馈都会有所帮助。谢谢。

我想知道,你为什么在这个问题上打了Java的标签? - Shreedhar
2
他可能只是不知道Java和JavaScript是不同的。 - Simon Edström
8
如果你认为 [Java] 标签错误,应该提出编辑建议。对于标记错误而进行投票是完全不适当的。如果你认为用户故意重复错标他的问题(例如为了更高的可见性或一般破坏行为),那么你应该将问题标记为需要管理员关注。赞和踩应该直接与问题的质量有关。 - apsillers
4
或许他加上了java标签是因为根据他之前的问题,他正在使用基于服务端的java。由于这个问题可能需要修复服务器端代码,所以我认为java是一个合适的标签。 - Kevin B
这实际上是需要在服务器端完成的事情,所以Java可能并不是那么错误;-) - Simon Edström
你的后端是使用 Apache + PHP 吗? - SReject
4个回答

2

使用您的初始代码,如果您可以访问后端,在请求xml时,请添加以下标题:

Content-disposition: attachment; filename=test.xml;

另一种方法是使用XMLHttpRequest获取文件,然后使用Flash插件保存它。我有一点使用过这种方法,可以在这里找到Flash SWF。


2

你可以在XHR上设置头信息...有什么可以用它做的吗? - AlanFoster
1
XHR可以帮助您修改请求,据我所知,您必须更改响应中的Content-type头。 - Simon Edström

0

将响应头的内容类型设置为application/xml


-1

HTML:

<input id="downloadthis" value="Download"/>

在 JavaScript 标签内:

  $('#downloadthis').click( function() {
window.location.href = 'http://localhost/test/test.xml';
 } );

参考:https://dev59.com/CVPTa4cB1Zd3GeqPnuwd#4864264


这是错误的,它不会显示“另存为”对话框。请阅读您所引用的帖子。 - Simon Edström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接