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");//表单文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值