2015-04-30 2 views
1

Я хочу загрузить несколько файлов в контроллер, но он принимает только один.загружать несколько файлов, enctype = "multipart/form-data"

Я использую multipart для передачи файлов. Как получить несколько файлов на стороне контроллера. Я не могу получить доступ к байтам и имени файла. Его ошибки в обращении,

@RequestMapping(value = "/home/step38/uploadReport", method = RequestMethod.POST) 
public ModelAndView uploadReport(     
     @RequestParam(value = "fileName") List<MultipartFile> files, 
     @RequestParam(value = "pLogId") String pLogId, 
      HttpServletRequest request, HttpSession session) 
{ 
    int applicationNameId = 0; 
    String fileName; 
    String typeOption = "Raw Particle Data"; 
    for(MultipartFile file:files)  
    fileName = file.getOriginalFilename(); 

    logger.debug("step3.1 upload particle count -- Start"); 

    ModelAndView modelAndView = createModelAndView(ToogleStep.step38); 
    setCurrentStep(session, modelAndView, ToogleStep.step38); 
    String view = "redirect:/home/step38"; 
    modelAndView.setViewName(view); 

    try 
    { 
     User user = (User) session.getAttribute(Constants.USER_DB); 
     Project current_project = (Project) session.getAttribute(Constants.PROJECT); 
     Credential credential = (Credential) session.getAttribute(Constants.AUTH_USER);    
     boolean checkOK = true;   

     if (current_project != null && SystemUtils.projectEditable(current_project, credential)) 
     { 
      long projectId = current_project.getId(); 

      if(checkOK) 
      { 
       byte[] bytes = file.getBytes();  
       HashMap<String,String> options= new HashMap<String,String>(); 
       //added pLogId in the options(this will contain demoToogleFileInfoId)   
       options.put(ToogleReportDataConstants.TTL_PROCESS_LOG_ID_OPTION,pLogId); 
       String toogleFileId = reportService.uploadReport(user, projectId, fileName, typeOption, bytes, applicationNameId, options); 

      } 
     }   
    } 

ответ

1

Вы не переходите в нужное место. попробовать обернув его после того, как у вас есть ModelAndView (вид)

int applicationNameId = 0; 
     String typeOption = "Raw Particle Data"; 
     ModelAndView modelAndView = createModelAndView(ToogleStep.step38); 
     setCurrentStep(session, modelAndView, ToogleStep.step38); 
     String view = "redirect:/home/step38"; 
     modelAndView.setViewName(view); 

     // upload multiple files.  
      for(MultipartFile file:files){ 
      String fileName= file.getOriginalFilename(); 

, и тогда вы сможете получить доступ к байты и имя файла. Попробуй. По крайней мере, глядя на вашу проблему, я могу предложить, и если вы можете дать более конкретную ошибку, я могу помочь.

+1

Вы спаситель ... извините, я не думал об этом. благодаря :) – PSDebugger

Смежные вопросы