首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在服务器上部署时发出导出到PPTX的下载报告。

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

Stack Overflow用户
提问于 2014-10-17 05:19:01
回答 1查看 708关注 0票数 7

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

我试过并注意到的事情:

  • 我检查了日志,没有任何例外或任何东西让人感到惊讶。
  • 下载的文件通常比我们在本地运行时得到的文件稍大一些。
  • 如果我将文件的扩展名更改为zip,并将其解压缩。文件结构和文件名是相同的,文件实际上是相同的文件大小。内容似乎只在每个幻灯片中找到的对象的名称上有所不同。
  • 认为这可能是我尝试导出到xlsx的x类型文件中的一个问题,只是为了看看会发生什么,并且在相同的模板中可以很好地工作。
  • 我添加了一个已知很好的静态pptx文件,并且可以从服务器下载它。我这样做是为了从问题中消除服务器配置,并且感觉到它是有效的,我假设这是我的代码,只是不确定是什么。

下面是我们编写响应的代码:

代码语言:javascript
代码运行次数:0
运行
复制
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();

我已经没有关于故障排除步骤的想法了,如果不能在本地复制它,我发现很难诊断。

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 21:03:08

这是在黑暗中的一次尝试,但您确定mime类型在您的WebSphere实例中配置正确吗?(我意识到,在响应中设置内容类型应该可以避免为该MIME类型配置web服务器的要求,但它毕竟是WebSphere;-)

我愿意打赌PDF是配置好的MIME类型,但是PPTX不是。你能检查一下吗?

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

(这里有一个更详细的technote)

与Tomcat不同,Tomcat是一种“捆绑”的http堆栈和servlet容器,WebSphere有一个单独的http堆栈(每个应用程序都有一个单独的JVM ),因此在那里可能需要配置,而对于更简单的容器,这并不奇怪。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26418347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档