在服务器上部署时,发布导出到PPTX的下载报告

我们使用JasperReports 5.6.1生成我们的报告,并允许将相同的模板导出为PDF或Powerpoint。 在本地运行时,PDF和PPTX文件下载完美。 当我们部署到我们的服务器时,PDF工作正常,但无法打开PPTX文件。 当我们在本地运行时,它被部署到tomcat,但是当部署到服务器时,它将在Websphere上运行。

我试过并注意到的事情:

  • 我已经检查过日志,没有任何异常或任何可以引起任何异议的地方。
  • 下载的文件通常比我们在本地运行时获得的文件稍大。
  • 如果我将文件的扩展名更改为zip,并将其解除保存。 文件结构和文件名称相同,文件实际上是相同的文件大小。 内容似乎只在每个幻灯片中找到的对象的名称中有所不同。
  • 认为它可能是一个问题,我试图导出到xlsx的x类型文件,只是为了看看会发生什么,并使用相同的模板工作正常。
  • 我添加了一个很好的静态pptx文件,并且可以从服务器上无需下载即可下载。 我这样做是为了消除服务器配置的问题,并感觉它的工作,我假设它是与我的代码的东西,只是不知道是什么。
  • 以下是我们编写响应的代码:

    if ("xlsx".equals(type)) {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".xlsx");
    } else if ("pptx".equals(type)) {
        response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
        response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pptx");
        response.setCharacterEncoding("UTF-8");
    } else {
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pdf");
    }
    try (final ByteArrayOutputStream reportResult = reportsService.generateReport(
            getDeal(userId, dealId, sessionStore),
            getScenarioModel(userId, dealId, scenarioId, sessionStore), reportId, type)) {
        configureResponse(response, type, reportResult, dealId + "-" + scenarioId);
        // Write to http response
        reportResult.writeTo(response.getOutputStream());
    }
    
    response.flushBuffer();
    

    我已经用完了故障排除步骤的想法,并且无法在本地重现它,但我发现很难诊断。


    这在黑暗中有点不明显,但是您确定在WebSphere实例中正确配置了mime类型吗? (我意识到,在响应中设置内容类型应避免为该MIME类型配置Web服务器,但毕竟是WebSphere ;-))

    我敢打赌,PDF是一种配置的MIME类型,但PPTX不是。 你可以检查一下吗?

  • 登录到WAS管理控制台
  • 转到虚拟主机
  • 点击称为MIME类型的链接
  • (这里是一个更详细的技术)

    IIRC,与Tomcat不同(它没有更好的术语),它是一种“捆绑”的一体化http堆栈和servlet容器,WebSphere具有单独的http堆栈(以及每个应用程序的单独JVM),所以它是毫不奇怪,那里可能需要的配置不适合简单的容器。

    链接地址: http://www.djcxy.com/p/23195.html

    上一篇: Issue downloading report exported to PPTX when deployed on server

    下一篇: Wrapper functions for data.table