我正在根据 ajax 请求创建一个工作簿对象(excel 对象“org.apache.poi.ss.usermodel.Workbook”)。
如何将此文件从 servlet 发送到浏览器并让浏览器弹出一个下载框。
我正在根据 ajax 请求创建一个工作簿对象(excel 对象“org.apache.poi.ss.usermodel.Workbook”)。
如何将此文件从 servlet 发送到浏览器并让浏览器弹出一个下载框。
您必须将 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();