SpringMVC中servletFileUpload.parseRequest(request)解析為空獲取不到數據問題


下面是文件接收的方法,其中List<FileItem> items為空,獲取不到上傳文件。

 
@RequestMapping(value = "/imagedetect", method = { RequestMethod.POST})
@ResponseBody
public Object imagedetect(ModelMap model, HttpServletResponse response) throws IOException {
        logger.info("檢測任務開始====" + DateUtil.getCurrentTime());
        HttpServletRequest request=CommonUtil.getRequest();
        String access_token = request.getParameter("access_token");
        String url = request.getParameter("image");
        String tag = request.getParameter("tag");
        Object obj = new Object();
        //判斷該請求是否有上傳文件
        if(ServletFileUpload.isMultipartContent(request)) 
        {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            try {
                List<FileItem> items = upload.parseRequest(request);
                for(FileItem item: items)
                {
                                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
                    }else{
            
        }
}
 

經過查找資料,分析后,發現在springmvc的配置文件中有這樣一段代碼:

1
2
3
4
5
<bean id= "multipartResolver"  class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name= "defaultEncoding"  value= "UTF-8"  />
<property name= "maxUploadSize"  value= "104857600" />
<property name= "maxInMemorySize"  value= "4096" />
</bean>

 這兩種分別是兩種上傳文件的設置方式,但是不能同時使用。切記。

把這個配置刪除測試發現問題解決。

如果你想使用springmvc的文件上傳方式,只需要后台接收的方法這么寫:

1
2
3
4
5
6
7
8
@RequestMapping (value =  "imagedetectufile" , method = { RequestMethod.POST })
     @ResponseBody
     public  Object detectPictureTask(
             @RequestParam (value =  "image" , required =  false ) MultipartFile file[],
             ModelMap model, HttpServletResponse response)  throws  IOException {
                 //業務邏輯。。。
                 //............      
}

親測好使。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM