在IE中“保存为”按钮,在客户端保存文件

时间:2012-01-10 09:38:34

标签: javascript jquery html xml internet-explorer

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

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

1 个答案:

答案 0 :(得分:0)

如果你的意思是在jQuery / Javascript中创建文件并且能够从浏览器将其保存到磁盘,答案显然是否定的。不允许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>