這幾天,做一個東西需要上傳圖片和視頻,于是就用commons-fileupload做為上傳組件,寫了個上傳的servlet,但是在實際上傳測試的時候,發(fā)現(xiàn)中文的表單值和中文的文件名都是亂碼.
于是上網(wǎng)查了一下,幾位前輩也總結了這個問題,但是具體的情況不同,現(xiàn)把自己遇到這個問題的最后解決方法寫下來,以備后用.
1.由于我的頁面是utf-8的編碼,因此寫了個過濾器,對所有的request請求使用utf-8編碼
2.然后在上傳的servlet中取得request的編碼格式,
String encoding=request.getCharacterEncoding();
3,解決上傳文件的路徑亂碼設置,如下
FileItemFactory fif=new DiskFileItemFactory();
ServletFileUpload sfu=new ServletFileUpload(fif);
sfu.setHeaderEncoding(encoding);//這里是設置編碼的
4.解決表單域字段的值的亂碼,如下
item.getString(encoding);
經(jīng)過這幾個步驟以后,就可以解決中文亂碼的問題,至于文中提到的過濾器,還有具體的上傳的細節(jié)代碼,可以從tomcat的例子,commons-fileupload的文檔中獲得信息.
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報。