SpringMVCファイルのダウンロード時にブラウザに保存されたファイル名が正しく表示されない
1280 ワード
問題:出力ストリームを印刷することでファイルをローカルにダウンロードするが、fireboxでダウンロードしたファイルにはファイルのファイル名が表示されず、ファイルが直接開くことができず、他のブラウザが直接開くことができる.
理由:主にファイル名に漢字があり、トランスコードがないためfireboxブラウザに保存されているファイル名が正しく表示されません.
ソリューション:
互換性のないブラウザ:firebox
理由:主にファイル名に漢字があり、トランスコードがないためfireboxブラウザに保存されているファイル名が正しく表示されません.
ソリューション:
//
public static String toUtf8String(HttpServletRequest request, String s) {
String agent = request.getHeader("User-Agent");
try {
boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1);
if (isFireFox) {
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
} else {
s = toUtf8String(s);
if ((agent != null && agent.indexOf("MSIE") != -1)) {
// see http://support.microsoft.com/default.aspx?kbid=816868
if (s.length() > 150) {
// request locale
s = new String(s.getBytes("UTF-8"), "ISO8859-1");
}
}
}
} catch (UnsupportedEncodingException e) {
log.error(" UTF8 , :" + s);
}
return s;
}
互換性のないブラウザ:firebox