我有一个应用程序(Web 应用程序),用户可以在其中查看 jasper 报告。唯一的问题是,当他们决定将 pdf 保存到本地计算机时,pdf 的文件名不正确。在 Chrome 中,它们被命名为 download.pdf,在 Firefox 中,它们被命名为 sgsgjsg.pdf。
如何才能以正确的名称保存文件?
请注意,我这样设置标题类型:
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"%s\"" + exportFile.getName());
inputFileInputStream = new FileInputStream(fullPathFile);
outputFileOutputStream = response.getOutputStream();
在头文件名中放入您需要的值。 例如:
response.setHeader("Content-Disposition", "attachment; filename="\"download.pdf\"");
它应该对所有浏览器都适用。
如果您遇到异常 NoClassDefFoundError:名称错误,我可以通过排除 jasperreports 的子依赖项来解决该问题。我的 Maven 配置如下所示:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperreports.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</exclusion>
</exclusions>
</dependency>