private String processFileName(HttpServletRequest request, String fileName) throws IOException {
String codedfilename = null;
if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {
String prefix = fileName.lastIndexOf(".") != -1 ? fileName.substring(0,
fileName.lastIndexOf(".")) : fileName;
// System.out.println(prefix);
String extension = fileName.lastIndexOf(".") != -1 ? fileName
.substring(fileName.lastIndexOf(".")) : "";
// System.out.println(extension);
String name = java.net.URLEncoder.encode(prefix, "UTF8");
if (name.lastIndexOf("%0A") != -1) {
name = name.substring(0, name.length() - 3);
}
// System.out.println(name);
int limit = 150 - extension.length();
if (name.length() > limit) {
name = java.net.URLEncoder.encode(prefix.substring(0, Math.min(prefix
.length(), limit / 9)), "UTF-8");
if (name.lastIndexOf("%0A") != -1) {
name = name.substring(0, name.length() - 3);
}
}
codedfilename = name + extension;
codedfilename = codedfilename.replaceAll("\\+", " "); // 重新建立空格
} else if (request.getHeader("User-Agent").indexOf("Mozilla") != -1) {
codedfilename = "=?UTF-8?B?"
+ (new String(Base64.encodeBase64(fileName.getBytes("UTF-8"))))
+ "?=";
} else {
codedfilename = fileName;
}
return codedfilename;
}
下载 中文文件名乱码问题
最新推荐文章于 2020-08-26 16:15:49 发布