Java 发送 xls 文件但浏览器将其识别为 xlsx

Java sending xls file but browsers recognising it as xlsx

我正在从 Java 后端导出一个 xls 文件,但是当客户端收到它时,它被识别为一个 xlsx 文件,尽管它的名称中有 .xls 扩展名。我正在使用 JasperXlsExporterBuilder 构建 xls 文件。

发送文件时,我设置了响应类型:response.type("application/vnd.ms-excel");

和响应 headers:response.header("Content-Disposition", "attachment;filename=" + file.getName()); 其中文件名是 filename.xls

但是当客户端收到它时,文件名为 filename.xls 但它说 You have chosen to open: filename.xls which is Excel 2007 spreadsheet (5kB) from: blob: 这会导致问题,因为某些 excel 版本无法处理识别类型和文件扩展名。

不是你正在做的事情造成的;下载文件的计算机安装有问题。例如,如果注册表 'links' .xls 扩展名,您就会得到它。你无法检测到它也无法修复它(因为你是一个网络服务器;如果你可以检测或修复这些东西,你也可以做恶意的事情,因此,你不能,你永远也无法从网络服务器)。

您可以尝试的最后一项努力可能行不通(此时您已经用尽了服务器端可用的所有选项)是确保 URL 本身以 .xls 结尾.确保用户正在关注 link,例如 https://www.user3274server.com/foo/bar/filename.xls