我能够正确查看Chrome中的文件名,但IE中没有获取文件名
的编码格式(例如=?UTF-8?B?5qWt55WM5pSv5Ye6UERGXzIwMTUwMjEwMTEwNjIy?=
)。
fileName = "=?UTF-8?B?" + new String(Base64.encodeBase64(fileName.getBytes("UTF-8")), "UTF-8") + "?=";
请帮我解决这个问题。
答案 0 :(得分:0)
没有很好的跨浏览器解决方案。我发现了一篇名字很好的文章Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987,它总结了不同浏览器支持的内容。虽然我无法在你正在使用的base64机制上看到任何内容。
有许多不同的变体,请尝试使用网址编码表单,请参阅http://greenbytes.de/tech/tc2231/#attwithfn2231utf8。实施例
Content-Disposition: attachment; filename*=UTF-8''foo-%c3%a4-%e2%82%ac.html
假设您只需要>这可以获得更好的支持。 IE8
FF22 pass
MSIE8 unsupported
MSIE9 pass
Opera pass
Saf6 pass
Konq pass
Chr25 pass
根据您希望支持的IE版本,您可能需要进行一些脏的USER_AGENT嗅探并发送标题。
if (isUserAgentIe(requestHeaders)) {
fileName = ...
} else {
fileName = ...
}