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 閱讀(1386) 評論(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));  回復  更多評論
            

          主站蜘蛛池模板: 疏附县| 阳谷县| 昆明市| 青浦区| 珠海市| 耿马| 合阳县| 兰西县| 图们市| 牙克石市| 合江县| 望奎县| 五寨县| 皮山县| 永定县| 项城市| 大宁县| 三门峡市| 通化市| 义马市| 乌什县| 芮城县| 卫辉市| 富宁县| 手游| 南通市| 双流县| 麻江县| 六盘水市| 邯郸市| 吉木萨尔县| 绿春县| 会理县| 镇康县| 耒阳市| 增城市| 吕梁市| 延庆县| 凌云县| 德兴市| 盐山县|