步入2011年末了,可是公司一直都还是使用的旧平台框架.
struts1.1 很老的框架了,有些细小的bug在开发中会遇到
现在记录一下struts1.1中自带的fileupload.jar 1.0版本的问题
该jar组件用于实现文件上传,在实际开发中发现,当上传中文文件名的时候,server端会发生中文文件名乱码的问题.刚开始以为是浏览器的问题,但是使用http监听查看报文收发,截取了字节出来查看,发现浏览器端确实是使用page页面指定的编码进行上传文件名的编码的.
这就说明是server端的问题了,跟踪平台代码一路调试,从filter一路调试到公司平台的Action实现,发现是在struts的公共上传处理后,文件名发生的乱码,说明不是filter,也不是公司通用Action造成的.
由于struts1.1使用了fileupload组件,于是在网上搜寻了一些相关的资料,均得不到正确的指导,很多人都说直接使用getByte("GBK")来处理乱码,但这种写死编码的风格,不是我喜欢的.于是google中文未果的情况下,无奈到apache官网查看buglist,终于找到了下面的bug:
https://issues.apache.org/jira/browse/FILEUPLOAD-13
根据文中所说,1.0版本确实是按照平台自己的编码去进行解码的,而不是使用request中指定的编码,此bug在1.1版本中得到了解决,于是下载了1.1.1版本的fileupload,试了一下,终于搞定中文乱码问题了.
解决问题后不禁一番感慨,确实公司的平台太落后了,还用着10年前的struts,公司一直依附的银行系统也是一直指定ie6浏览器作为内部系统标准浏览器.有时候看到html5和css3,除了流口水还是流口水...
看来要找个机会改造下公司的平台了,最起码把项目组所用到的平台先升级了,太out了