2012-01-10 54 views
3

有没有什么办法可以生成一个文本/ xml文件,设置内容类型为应用程序下载,在客户端添加附件等侧?我想要的是我的页面上的“下载”按钮,它保存了一个xml文件。这是我做同样的事情在服务器端:在IE中“另存为”按钮,在客户端保存文件

response.StatusCode = 200; 
     response.ContentEncoding = Encoding.UTF32; 
     response.AddHeader("content-disposition", "attachment; filename=" + fileName); 
     response.AddHeader("Content-Transfer-Encoding", "binary"); 
     response.AddHeader("Content-Length", response.ContentEncoding.GetByteCount(xmlString).ToString()); 
     response.ContentType = "application-download"; 
     response.Write(xmlString);  
+0

你的意思是用JavaScript? – 2012-01-10 09:51:22

+0

我猜这是ASP.NET与C#? – Carlito 2012-01-10 10:06:18

+0

@JanHančič是的,javascript/jquery – Johan 2012-01-10 10:12:06

回答

0

如果你的意思是创建的jQuery/JavaScript中的文件,并能够将其从浏览器保存到磁盘,答案是普通NO。不允许使用Javascript(出于安全原因)保存到磁盘,也不允许浏览器为本地创建的内容抛出“另存为...”弹出窗口。 你有一个更容易解决你的问题。在你的例子中,你正在创建xml文件并将它作为服务器的附件发送,为什么不用一个按钮来下载服务器创建的文件? 你不能用纯ajax做,因为它不能在浏览器中触发下载,但你可以使用旧的“iframe下载技巧”在同一页面启动下载。

function download(url_to_your_creating_file_servlet){ 
iframe = document.createElement('iframe'); 
iframe.style.visibility = 'hidden'; 
document.body.appendChild(iframe); 
iframe.src = url_to_your_creating_file_servlet; 
} 

或者,如果你不介意打开另一个窗口/标签(有点丑陋)这也适用:

<a href="url_to_your_creating_file_servlet" target="blank"> Download </a> 
相关问题