gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:20 27 4
gpt4 key购买 nike

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

我尝试并注意到的事情:

  • 我已经检查了日志,没有任何异常或任何值得关注的地方。
  • 下载的文件通常比我们在本地运行时得到的文件稍大。
  • 如果我将文件的扩展名更改为 zip,然后取消存档。文件结构和文件名是相同的,文件实际上是相同的文件大小。内容似乎只是在每张幻灯片中找到的对象的名称不同。
  • 认为这可能是 x 类型文件的问题,我也尝试导出到 xlsx,只是为了看看会发生什么,并且它在相同的模板上工作正常。
  • 我添加了一个众所周知的静态 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 不是。你可以检查一下吗?

  1. 登录 WAS 管理控制台
  2. 转到虚拟主机
  3. 单击名为 MIME 类型的链接

( here's a more detailed technote )

IIRC,不像 Tomcat(缺少更好的术语)是一种“捆绑的”一体式 http 堆栈和 servlet 容器,WebSphere 有一个单独的 http 堆栈(以及每个应用程序的单独 JVM) ,因此对于更简单的容器来说,可能需要配置就不足为奇了。

关于java - 在服务器上部署时发布导出到 PPTX 的下载报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26418347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com