java - Excel 尝试在 IE 中打开文件以供下载

标签 java internet-explorer spring-mvc ms-office

我有一个有点晦涩的问题,但我会尽力解释。

我们使用 SpringMVC 映射了 URL,以便在发出 POST 请求时可以触发下载。例如,请求

POST /request/bobby.html {POST variables:id=5}

将触发与 id 5 相关的 CSV 文件的下载。问题是在 IE 中,执行此操作会让您选择“打开”或“另存为”。选择“打开”将按预期在 MS Excel 中打开 CSV 文件,但临时文件将命名为 bobby.html。当用户让 Excel 保持打开状态并尝试加载另一个 ID(例如 6)时,焦点将更改为 Excel,但由于请求仍指向 bobby.html,因此文件不会刷新。您必须在 Excel 中关闭该文件,然后同名的新文件才能取代它,但没有消息告诉用户关闭旧文件。

理想情况下,我希望更改文件名,但所使用的 Spring servlet 被专门映射到 *.html 文件只是因为我们有其他应用程序在具有其他扩展名的同一容器中运行。

我已经尝试在请求中添加一个 UUID 只是为了让它看起来与 Excel/IE 不同,并且它在某种程度上起作用了......

POST /request/bobby.html?uuid=<uuid> {POST variables:id=6}

使它看起来与 IE 不同,但 Excel 仍将基本请求保留为文件名。这允许发出警告,但告诉用户他们的文件名为“bobby.html”并且他们无法打开另一个文件可能比根本没有警告更令人困惑。

我也尝试在最后添加一些东西:

POST /request/bobby.html/<uuid> {POST variables:id=6}

知道如何使这项工作成功吗?我知道这种类型的事情在 SpringMVC 中是可行的,但是使用 servlet 映射有没有办法让它工作?

提前致谢。

最佳答案

您是否尝试过像 /request/bobby_{uuid}.html 这样的映射?这样文件名每次都是唯一的。然后你可以忽略 uuid 变量。

我从来没有尝试过这个...只是一个疯狂的想法。

关于java - Excel 尝试在 IE 中打开文件以供下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586371/

相关文章:

java - 部署在 Tomcat 上的 Spring Boot Rest API 提供 404,但独立运行一切正常

javascript - 无法将js加载到html中

java - 如何使用 Mockito 和 Java 在方法中传递模拟参数

java - Dot Net 和 Java 文化代码

html - IE7 奇怪的背景位置行为

css - IE 宽度渲染问题

java - 将 Spring/Hibernate 应用程序连接到 Docker 中运行的 Mysql

java - 如何在基础适配器类中使用 if else 条件

java - 安装jdk 7u67后,创建新的Android项目时出错

IE 的 CSS 定位问题