SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题

后台代码:

    @RequestMapping(value = "/upload")
    public JSONObject fileUpload(HttpServletRequest request) {
        JSONObject resultJson = new JSONObject();
        try {
            String fileName=null;
            List<FileItem> fileItemList = parseFileItemListFromRequest(request);
            if (fileItemList != null && fileItemList.size() != 0) {
                FileItem fileItem = fileItemList.get(0);
                InputStream is= fileItem.getInputStream();
                fileName=fileItem.getName();
                System.out.println("**********文件名称:"+fileName);
                List<List<String>> list= ExcelUtil.getListByExcel(is, fileItem.getName());

                System.out.println("**********Excel数据有"+list.size()+"条**********");
                System.out.println(JSON.toJSONString(list));
                //row=saveUserInfoList(list);
                System.out.println("*************"+"加载完毕"+"*************");
            }
        } catch (Exception e) {
            resultJson.put("statusCode", 300);
            logger.error(e.getMessage());
            resultJson.put("message", "文件上传失败");
        }
        return resultJson;
    }

发现在springMvc配置文件中,有一段下面配置:

<!-- 配置多请求数据类型,如json xml-->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	  	<!-- 以字节为单位的最大上传文件的大小 -->
	  	<property name="maxUploadSize" value="10000000" />
    </bean>

把这个配置删除测试发现问题解决。

还可以这样解决:保留配置,使用如下的方式

    @RequestMapping(value = "/upload")
    public JSONObject fileUpload(HttpServletRequest request) {
        JSONObject resultJson = new JSONObject();
        try {

            String fileName=null;

            //将request强转,因为拦截过后request的实际类型是DefaultMultipartHttpServletRequest
            DefaultMultipartHttpServletRequest fileRequest = (DefaultMultipartHttpServletRequest)request;
            //获取文件Map
            MultiValueMap<String, MultipartFile> fileMap = fileRequest.getMultiFileMap();
            //遍历所有的文件,每个List<MultipartFile>代表一个文件,get(0)就可以了
            for(Map.Entry<String, List<MultipartFile>> entry : fileMap.entrySet()) {
                List<MultipartFile> value = entry.getValue();
                MultipartFile multipartFile = value.get(0);
                try {
                    InputStream is= multipartFile.getInputStream();
                    System.out.println("**********Excel file mane:"+multipartFile.getOriginalFilename()+"**********");
                    List<List<String>> list= ExcelUtil.getListByExcel(is, multipartFile.getOriginalFilename());
                    System.out.println("**********Excel数据有"+list.size()+"条**********");
                    System.out.println(JSON.toJSONString(list));
                    //row=saveUserInfoList(list);
                    System.out.println("*************"+"加载完毕"+"*************");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            //文件成功上传到七牛云后就删除服务器上的mp3
            /*File file = new File(filePath);
            if(file.exists()){
                file.delete();
            }*/
        } catch (Exception e) {
            resultJson.put("statusCode", 300);
            logger.error(e.getMessage(),e);
            resultJson.put("message", "文件上传失败");
        }
        return resultJson;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值