用Apache的commons-fileupload组件上传文件时,普通字段编码出错

来源:互联网 发布:永硕音乐网页源码 编辑:程序博客网 时间:2024/06/05 02:11

问题现象:
   在Servlet 上用 Apache 的commons-fileupload组件上传文件时,文件可以正确传输,

但Form中的普通文本字段保存到数据库中却显示为乱码(排除了数据库编码的问题)。


原因:
 
  用jsp上传文件时,浏览器采用了另一种编码方式,即 "multipart/form-data",  与普通form不同。
这时表单中的普通文本字段可能没有按encoding进行编码(个人猜测)。

解决方法:

  在servlet 中取得普通文本字段的值时指定Encoding:

 // 取得Form中的所有字段

  List<FileItem> list = (List<FileItem>) upload.parseRequest(request);

  for (FileItem fieldItem : list) {

         if(fieldItem.isFormField()){
            // 普通文本字段  
             String fieldName = fieldItem.getFieldName();
                 String fieldValue = fieldItem.getString("UTF-8")

           }

         else { 
               // 文件字段
                fieldItem.write(new File("filePath", "fileName"));
            }
 }   

0 0