我正在开发一个Web应用程序,在某个时刻用户请求服务器(servlet),服务器应该向用户返回一个csv文件。此时我需要向用户显示一个对话框,您可以选择指定要保存csv文件的目录。
在Servlet中我有:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/csv");
response.setHeader("content-disposition","filename=test.csv"); // set the file name to whatever required..
PrintWriter out = response.getWriter();
out.println("a,b,c,d,e,f");
out.println("1,2,3,4,5,6");
out.flush();
out.close();
}
在javascript中我有:
$.get('URL_SERVLET' , function(data) {
alert("ret: " + data);
});
下一步是怎么回事?
修改 的
使用以下简单命令获得了良好的结果:
<a href='http://localhost:8080/MY_SERVLET'> link here </ a>
单击该链接,将自动下载文件test.csv
为了满足我的需要,我需要“href”内容是动态的,只需点击一下按钮即可解雇。
示例:
用户选择名为“radio 1”的无线电组件并单击“Export csv”按钮,这次将动态构建url,例如:“http:// localhost:8080 / MY_SERVLET / csv1”,文件将自动下载(等于上面包含文本“链接在这里”的链接上发生的事情)
有可能吗?
感谢。
答案 0 :(得分:1)
无法指定下载文件的“目录”,因为:
可能的解决方案:
答案 1 :(得分:0)
您无法使用ajax触发另存为对话框。您只需将浏览器导航到下载URL即可。它将检测正确的标题并显示另存为对话框。
答案 2 :(得分:0)
您无法强制使用JavaScript进行另存为对话,因此最终会出现无法使用的响应。您需要使用window.location
而不是ajax请求。
window.location = 'URL_SERVLET';