有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在处理ajax请求后下载一个文件

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

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


共 (2) 个答案

  1. # 1 楼答案

    在谷歌搜索了很多次之后,我开始知道使用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();
    
  2. # 2 楼答案

    您必须将内容类型设置为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
    

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