gpt4 book ai didi

java - Content-Disposition 设置的文件名在IE6 中被忽略。来自 web.xml 的 URL 显示为文件名

转载 作者:行者123 更新时间:2023-11-30 11:58:05 25 4
gpt4 key购买 nike

这是我要运行的代码片段。它在本地运行良好,但如果我尝试在 unix 服务器上运行它,下载文件的名称将显示为映射到 web.xml 中的 servlet 的 url,而不是 报告.xls。请帮帮我……

response.reset();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment; filename=Report.xls;");

最佳答案

这是一个已知的 IE 问题。它确实完全忽略了 Content-Disposition header 中的文件名,并使用 URL 路径信息的最后一部分作为 Save As 对话框中的默认文件名。您应该将下载文件的文件名添加为路径信息的一部分。例如 http://example.com/context/reportservlet/report.xlsweb.xml 中,servlet 映射到 /reportservlet/*url-pattern(注意尾随 /*)

如果你想在 servlet 中获取指定的文件名以便你可以更动态地执行一个和另一个,那么你可以使用 HttpServletRequest#getPathInfo()为此。

String filename = request.getPathInfo().substring(1);
// Substring gets rid of leading `/`.

另见:

关于java - Content-Disposition 设置的文件名在IE6 中被忽略。来自 web.xml 的 URL 显示为文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386198/

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