2015-02-10 37 views
1

工作,我能够看到正确Chrome中的文件名,但不是在IE获取编码格式的文件名内容处置头字段不是IE的理解,但随着Chrome的

(例如=?UTF-8?B?5qWt55WM5pSv5Ye6UERGXzIwMTUwMjEwMTEwNjIy?=)。

fileName = "=?UTF-8?B?" + new String(Base64.encodeBase64(fileName.getBytes("UTF-8")), "UTF-8") + "?="; 

请帮我解决这个问题。

+0

可能重复的[如何在浏览器的文件下载框中显示非ASCII文件名?](http://stackoverflow.com/questions/149058/how-to-display-a-non- ascii-filename-in-the-file-download-box-in-browsers) – 2015-02-10 06:51:17

+0

嗨,亚当,感谢您的投入。我们尝试过您的选择,但面临同样的问题。 – user3714194 2015-02-10 06:58:42

回答

0

对此,没有很好的跨浏览器解决方案。我找到了很好命名的文章Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987,它总结了不同浏览器支持的内容。虽然我看不到您使用的base64机制上的任何内容。

有许多不同的变体,请尝试使用URL编码形式,请参阅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 = ... 
} 
+0

嗨,亚当,我已经添加了内容处置和stil面临相同的问题 – user3714194 2015-02-10 12:34:47

+0

什么确切版本的Internet Explorer是造成这个问题? – Adam 2015-02-10 12:35:45

+0

嗨,亚当,我试过所有版本的IE和面临同样的问题。 – user3714194 2015-02-11 17:30:37