【发布时间】:2013-04-08 16:09:11
【问题描述】:
我正在根据 ajax 请求创建一个工作簿对象(excel 对象“org.apache.poi.ss.usermodel.Workbook”)。
我怎样才能把这个文件从servlet发送到浏览器,让浏览器弹出一个下载框。
【问题讨论】:
标签: java spring excel model-view-controller
我正在根据 ajax 请求创建一个工作簿对象(excel 对象“org.apache.poi.ss.usermodel.Workbook”)。
我怎样才能把这个文件从servlet发送到浏览器,让浏览器弹出一个下载框。
【问题讨论】:
标签: java spring excel model-view-controller
您必须将 Content-Type 设置为 application/x-msdownload 并将 Header 设置为 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
由于您更改了响应标头,因此浏览器将自动显示弹出消息以下载文件。
【讨论】:
经过大量谷歌搜索后,我知道使用 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();
【讨论】: