FileUpload 1.0 上傳文件 中文文件名亂碼

步入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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章