在IE中“另存为”按钮,在客户端保存文件
问题描述:
有没有什么办法可以生成一个文本/ 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);
答
如果你的意思是创建的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>
你的意思是用JavaScript? – 2012-01-10 09:51:22
我猜这是ASP.NET与C#? – Carlito 2012-01-10 10:06:18
@JanHančič是的,javascript/jquery – Johan 2012-01-10 10:12:06