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

猜你喜欢

转载自blog.csdn.net/qq_27098879/article/details/77197986
今日推荐