多文件上传MultipartHttpServletRequest使用

多文件上传MultipartHttpServletRequest使用

废话少说直接撸代码

private void parseHttpServletRequest(HttpServletRequest request)throws Exception{
    List<String> fileNames = new ArrayList<>();
    List<File> fileEntity = new ArrayList<>();
    MyFile file = new MyFile();
    //创建一个通用的多部分解析器 
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());  
        //判断 request 是否有文件上传,即多部分请求  
        if(multipartResolver.isMultipart(request)){
            //转换成多部分request    
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;  
            MultiValueMap<String,MultipartFile> multiFileMap = multiRequest.getMultiFileMap();
            List<MultipartFile> fileSet = new LinkedList<>();
            for(Entry<String, List<MultipartFile>> temp : multiFileMap.entrySet()){
                fileSet = temp.getValue();
            }

            for(MultipartFile temp : fileSet){
                File file2 = new File("c:/temp/"+temp.getOriginalFilename());
                if(!file2.exists()){
                    file2.mkdirs();
                }
                fileNames.add(temp.getOriginalFilename());
                temp.transferTo(file2);
                fileEntity.add(file2);
            }
            file.setFileNames(fileNames);
            file.setFileEntity(fileEntity);
        }
    }

其实上面的代码中就是在获取多个文件对象时有个比较绕的地方, 
通过 
multiRequest.getFileNames();//值是Page这个字符串 
multiRequest.getFileMap(); 
//会截断

MultiValueMap <String,MultipartFile> multiFileMap = multiRequest.getMultiFileMap()
1
中的MultipartFile链表,只能获取一个。

debug时发现request中的MultiFileMap的大小确实是一个,但是这个key对应的value是一个链表。 
(有个初步猜想,可能是在上传的文件是分Page上传的,文件较少时就放到一个List(LinkedList)中,文件较多获取较大时分页传送,具体的阀值没有测试)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值