我正在ajax请求上创建一个工作簿对象(excel对象“org.apache.poi.ss.usermodel.Workbook”)。
如何将此文件从servlet发送到浏览器,并让浏览器弹出下载框。
答案 0 :(得分:0)
您必须将内容类型设置为application/x-msdownload
,将标头设置为Content-Disposition
例如:
String fileName = URLDecoder.decode("MyBook.xlsx", "ISO8859_1");//Change if required
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition", "attachment; filename="+ fileName);
//And just write output stream here
由于您已更改响应标头,因此浏览器将自动显示弹出消息以下载文件。
答案 1 :(得分:0)
经过大量的谷歌搜索,我发现它很难处理ajax请求。
所以我决定采用隐藏的形式。 在javascript中我创建了一个隐藏的表单并提交了表单所以我得到了excel下载弹出窗口。
我的javascript在下面给出。
var form = document.createElement("form"); //created dummy form for submitting.
var element1 = document.createElement("input");
form.method = "POST";
form.action = "/my/servlet/path";
element1.value=values; //its a json string I need to pass to server.
element1.name="data";
element1.type = 'hidden'
form.appendChild(element1);
document.body.appendChild(form);
form.submit();