java常用类——java web接受文件表单时常用文件解析方法

客官°小女子只卖身不卖艺 2023-10-17 18:24 111阅读 0赞

之前在工作中,用到需要用servlet来接收文件表单,但是这种表单接收到的内容有文本又有文件。

于是自己做了一个简单的封装,这个方法返回连个map,一个是文件map,一个是文本map。调用这个方法后,直接可以从map中去获取表单值。上代码。

  1. /**
  2. * 上传文件的处理
  3. * @throws Exception
  4. */
  5. public static Map<String,Map> fileControl(HttpServletRequest req, HttpServletResponse resp) throws Exception {
  6. // 在解析请求之前先判断请求类型是否为文件上传类型
  7. boolean isMultipart = ServletFileUpload.isMultipartContent(req);
  8. // 文件上传处理工厂
  9. FileItemFactory factory = new DiskFileItemFactory();
  10. // 创建文件上传处理器
  11. ServletFileUpload upload = new ServletFileUpload(factory);
  12. // 开始解析请求信息
  13. List items = null;
  14. items = upload.parseRequest(req);
  15. Map<String,Map> map=new HashMap<String,Map>();
  16. Map<String,String> textMap=new HashMap<String,String>();
  17. Map<String,List<FileItem>> fileMap=new HashMap<String,List<FileItem>>();
  18. // 对所有请求信息进行判断
  19. Iterator iter = items.iterator();
  20. while (iter.hasNext()) {
  21. FileItem item = (FileItem) iter.next();
  22. // 信息为普通的格式
  23. if (item.isFormField()) {
  24. String fieldName = item.getFieldName();
  25. String value = item.getString();
  26. textMap.put(fieldName, value);
  27. }
  28. // 信息为文件格式
  29. else {
  30. String fieldName=item.getFieldName();
  31. FileItem item2=item;
  32. System.out.println(fieldName);
  33. if(fileMap.get(fieldName)==null){
  34. List<FileItem> list=new ArrayList<FileItem>();
  35. list.add(item2);
  36. fileMap.put(fieldName, list);
  37. }else{
  38. List<FileItem> list=fileMap.get(fieldName);
  39. list.add(item2);
  40. fileMap.put(fieldName, list);
  41. }
  42. }
  43. }
  44. map.put("textMap", textMap);
  45. map.put("fileMap", fileMap);
  46. return map;
  47. }

调用取值:

  1. Map<String,Map> map=PlatformUtil.fileControl(request, response);
  2. Map<String,String> textMap=map.get("textMap");//表单文本
  3. Map<String,List<FileItem>> fileMap=map.get("fileMap");//表单文件

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读