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

          主站蜘蛛池模板: 阳泉市| 福贡县| 阿克| 丰原市| 长沙市| 温州市| 饶阳县| 古蔺县| 汉中市| 沙雅县| 沈阳市| 和林格尔县| 南江县| 平武县| 疏附县| 庄浪县| 黄冈市| 南靖县| 荣成市| 开鲁县| 阿克陶县| 阿图什市| 平塘县| 睢宁县| 两当县| 磐安县| 雅江县| 大安市| 封开县| 虹口区| 茶陵县| 玉屏| 建平县| 成武县| 安顺市| 隆子县| 砚山县| 綦江县| 盐津县| 津市市| 灵川县|