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 阅读(1378) 评论(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));  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: