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

本文介绍了一个使用Apache commons-fileupload组件上传文件时遇到的文本字段乱码问题及解决方案。通过在Servlet中获取表单数据时指定正确的字符编码(如UTF-8),可以有效避免乱码现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题现象:
   在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"));
            }
 }   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值