问题引出:
上传中文命名的图片,下载显示不了中文名称。
如图:
(相关视频教程推荐:java教程)
解决方法:
1、sping-mvc.xml部分代码:
<!-- 上传文件的处理器 --> <bean id=multipartResolver class=org.springframework.web.multipart.commons.CommonsMultipartResolver> <!-- 设置默认编码 解决了上传文件名乱码的问题 --> <property name=defaultEncoding value=utf-8></property> <!-- 上传图片最大大小5M --> <property name=maxUploadSize value=5242440></property> </bean>
2、FileController.java中文文件名获取代码:
获取浏览器格式,根据不同浏览器控制文件名编码格式。
String userAgent = request.getHeader(User-Agent);//获取浏览器名(IE/Chome/firefox) if(userAgent.contains(MSIE)||userAgent.contains(Trident)) {//针对IE或IE为内核的浏览器 fileName=java.net.URLEncoder.encode(fileName,UTF-8); }else { fileName=new String(fileName.getBytes(UTF-8),ISO-8859-1);//谷歌控制版本 } headers.setContentDispositionFormData(attachment, fileName);// 默认下载文件名为原始文件名
其他浏览器控制字符格式:(详细)
String userAgent = request.getHeader(User-Agent);//获取浏览器名(IE/Chome/firefox) if (userAgent.contains(firefox)) { fileName = new String(fileName.getBytes(UTF-8), ISO8859-1); // firefox浏览器 } else if (userAgent.contains(MSIE)) { fileName = URLEncoder.encode(fileName, UTF-8);// IE浏览器 }else if (userAgent.contains(CHROME)) { fileName = new String(fileName.getBytes(UTF-8), ISO8859-1);// 谷歌 } headers.setContentDispositionFormData(attachment, fileName);// 默认下载文件名为原始文件名
相关文章教程推荐:java入门教程