处理ajax请求后下载文件

时间:2013-04-08 16:09:11

标签: java spring excel model-view-controller

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

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

2 个答案:

答案 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();