jsp form 表单属性enctype的一些注意事项与解决方法

在form标签中enctype用来标记MIME编码格式,multipart/form-data 为文件上传的编码格式,默认的为application/x-www-form-urlencoded 不能用于文件上传。

所以设置了enctype=“multipart/form-data”格式的表单在后台 request.getParameter 获取文本属性的值的时候 会报空指针异常。

所以在既有文本域与文件上传的项目是 我的解决方法是:

[java]  view plain  copy
  1. private Map<String,String> parameters =new HashMap<String,String>();</span>  
[java]  view plain  copy
  1. 设计一个map属性  
[java]  view plain  copy
  1. 用apache的一个上传组件:  
[java]  view plain  copy
  1. DiskFileItemFactory factory = new DiskFileItemFactory();  
  2.         ServletFileUpload upload = new ServletFileUpload(factory);  
  3.         try {  
  4.             List items = upload.parseRequest(request);  
  5.             Iterator it = items.iterator();  
  6.             while (it.hasNext()) {  
  7.                 FileItem item = (FileItem) it.next();  
  8.                 if (item.isFormField()) {//判断是不是文本域信息  
  9.                     parameters.put(item.getFieldName(), item.getString("UTF-8"));  
  10.                       
  11.   
  12.                 }
  13.  类中的 getFieldName 为获取input的name属性值,getString为获取value值,把这两个值放入一个map中 然后通过key获取。

  14. 对应的jar包为:commons-email-1.5.jar ,commons-fileupload-1.3.3.jar,commons-io-2.5.jar,mail.jar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值