servlet接收multipart/form-data表单数据

表单的的提交方式有“application/x-www-form-urlencoded”和“multipart/form-data”两种方式,默认的缺省情况为“application/x-www-form-urlencoded”提交。

一般情况下使用“application/x-www-form-urlencoded”会比较快捷,然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。特别在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。所以,大数据传输时一般选择“multipart/form-data”。


然而当使用“multipart/form-data”传输时,如果传输的数据有多个参数,那么用request.getParameter()取到的值会是null。所以要用request.getInputStream()取值并解析。解析的部分网上提供多种封装好的方法。下面为其中一种方法。

  1. DiskFileItemFactory factory = new DiskFileItemFactory();   
  2.         ServletFileUpload upload = new ServletFileUpload(factory);   
  3.         upload.setHeaderEncoding("UTF-8");  
  4.         List items = upload.parseRequest(request);  
  5.         Map param = new HashMap();   
  6.         for(Object object:items){  
  7.             FileItem fileItem = (FileItem) object;   
  8.             if (fileItem.isFormField()) {   
  9.                 param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的   
  10.             }  
  11.         }  

用该方法解析完之后可以直接用param.get()获取你要的值,但是该方法要导入commons-fileupload-1.3.jar和commons-io-1.2.jar。

此为jar包下载地址http://download.csdn.NET/detail/han123456o/6769327

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值