Vincent Thinking

          All about Vincent's work and life

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 0 文章 :: 183 評論 :: 0 Trackbacks

          為了通用,從頭到尾都是utf-8.

          而webwork中JakartaMultiPartRequest對于多編碼的處理并不如意.

          apache的fileupload對于上傳文件名為中文的需要首先指定HeaderEncoding的編碼.
          而webwork對于MultiPartRequest的request并沒有設置encoding編碼
          詳見DispatcherUtils.java中 387行

          ???????? if ?(encoding? != ? null ? && ? ! MultiPartRequest.isMultiPart(request))? {
          ????????????
          try ? {
          ????????????????request.setCharacterEncoding(encoding);
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????LOG.error(
          " Error?setting?character?encoding?to?' " ? + ?encoding? + ? " '?-?ignoring. " ,?e);
          ????????????}

          ????????}

          如果沒有指定HeaderEncoding, 那么默認采用request的encoding,如果request也沒有指定則采用系統的編碼.
          這里并沒有指定request的encoding,往往導致上傳文件的名字亂碼.

          自定義一個MultiPartRequest,設定一下就ok了


          對于同時提交的表單域(form)參數,由于在form中指定的enctype的關系,并不能直接用request.getParameter()才取, 只能通過FileItem.getString()的方式.這里也是上面的問題, 取的CharacterEncoding是request中的,由于webwork的原因不一致.同樣需要指定一下.

          這樣form和上傳同時提交,參數,附件名都正常了 :)
          posted on 2006-04-25 18:24 Vincent Thinking 閱讀(1390) 評論(2)  編輯  收藏 所屬分類: JAVA

          評論

          # re: webwork 附件上傳中得一些問題 2006-08-08 17:11 黑洞
          "自定義一個MultiPartRequest,設定一下就ok了"——應該怎么定義啊?
          ihiyin@hotmail.com  回復  更多評論
            

          # re: webwork 附件上傳中得一些問題 2006-08-12 15:16 Vincent Thinking
          ServletFileUpload upload = new ServletFileUpload(fac);
          upload.setHeaderEncoding((String)Configuration.get(WebWorkConstants.WEBWORK_I18N_ENCODING));  回復  更多評論
            

          主站蜘蛛池模板: 常德市| 固阳县| 翁牛特旗| 南川市| 萍乡市| 昌都县| 通化县| 土默特左旗| 江安县| 彭阳县| 扶风县| 丘北县| 临桂县| 师宗县| 石柱| 牟定县| 平武县| 浮梁县| 峡江县| 福鼎市| 桃园市| 汉川市| 赤城县| 邻水| 微博| 扶绥县| 桃园市| 淄博市| 库尔勒市| 绥宁县| 酒泉市| 横峰县| 尼玛县| 龙胜| 来安县| 溆浦县| 陆丰市| 霍城县| 龙泉市| 温州市| 嵊州市|