java常用类——java web接受文件表单时常用文件解析方法
之前在工作中,用到需要用servlet来接收文件表单,但是这种表单接收到的内容有文本又有文件。
于是自己做了一个简单的封装,这个方法返回连个map,一个是文件map,一个是文本map。调用这个方法后,直接可以从map中去获取表单值。上代码。
/**
* 上传文件的处理
* @throws Exception
*/
public static Map<String,Map> fileControl(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 在解析请求之前先判断请求类型是否为文件上传类型
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
// 文件上传处理工厂
FileItemFactory factory = new DiskFileItemFactory();
// 创建文件上传处理器
ServletFileUpload upload = new ServletFileUpload(factory);
// 开始解析请求信息
List items = null;
items = upload.parseRequest(req);
Map<String,Map> map=new HashMap<String,Map>();
Map<String,String> textMap=new HashMap<String,String>();
Map<String,List<FileItem>> fileMap=new HashMap<String,List<FileItem>>();
// 对所有请求信息进行判断
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
// 信息为普通的格式
if (item.isFormField()) {
String fieldName = item.getFieldName();
String value = item.getString();
textMap.put(fieldName, value);
}
// 信息为文件格式
else {
String fieldName=item.getFieldName();
FileItem item2=item;
System.out.println(fieldName);
if(fileMap.get(fieldName)==null){
List<FileItem> list=new ArrayList<FileItem>();
list.add(item2);
fileMap.put(fieldName, list);
}else{
List<FileItem> list=fileMap.get(fieldName);
list.add(item2);
fileMap.put(fieldName, list);
}
}
}
map.put("textMap", textMap);
map.put("fileMap", fileMap);
return map;
}
调用取值:
Map<String,Map> map=PlatformUtil.fileControl(request, response);
Map<String,String> textMap=map.get("textMap");//表单文本
Map<String,List<FileItem>> fileMap=map.get("fileMap");//表单文件
还没有评论,来说两句吧...