0

我正在根据 ajax 请求创建一个工作簿对象(excel 对象“org.apache.poi.ss.usermodel.Workbook”)。

如何将此文件从 servlet 发送到浏览器并让浏览器弹出一个下载框。

4

2 回答 2

0

您必须将 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

由于您已更改响应标头,因此浏览器将自动显示弹出消息以下载文件。

于 2013-04-08T16:29:47.153 回答
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();
于 2013-04-09T10:15:21.980 回答