响应页面图片url中文名问题

时间:2023-02-01 02:38:05

  解决图片中文名的相应问题,目前试过两种可行方法。

  因为前端、后端都是使用的utf-8编码,所以可以修改tomcat中server.xml配置中的

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />,添加URIEncoding="utf-8",

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>

    这个是最简单的方法,个人测试是有效的,但是觉得改这个配置文件不是很好。后来使用的过滤器的方法,通过特征拦截需要响应的图片请求,自己将文件名解析并响应给页面。

web.xml中配置了两个过滤器,一个是一般处理乱码的过滤器,一个是处理图片中文文件名的过滤器。一般处理乱码过滤器要放在在前面。

响应页面图片url中文名问题

需要处理的图片位置,可以根据不同需求修改,这里直接放到指定文件夹upload下面,操作简单

响应页面图片url中文名问题

页面标签

响应页面图片url中文名问题

filter代码

响应页面图片url中文名问题

这里有3点说明:

1:向页面响应需要设置mime头。当我把mime去掉,并且GenericEncodingFilter在处理图片过滤器之前面,会出问题,img标签中的图片仍然显示正常,但是当点击链接看大图的时候页面会乱码,经过F12检查,是由于GenericEncodingFilter在响应的时候添加了text/html头造成的。

  如果将UploadFilter配置在GenericEncodingFilter前面就不会出现问题,F12检查没有响应头,但是显示正常。我也不懂为什么。

2:因为这里响应图片需要获取到绝对路径,所以将config作为成员变量,但绝的不是很好,不过没想到方法。也可以使用配置文件。

3:我这里响应的是原生的io流,可以考虑使用commons-io包下的FileUtils类中的方法,应该更高效。