2016-03-15 8 views
-1

Я использую функцию jquery ajaxSubmit для отправки моей формы. У меня также есть поле для загрузки файлов в форме.Загрузка файла Spring Ajax

Вот код функции ajaxSubmit.

$('#wizard-p-7').submit(function(e) { 
      $(".validationMessage").hide(); 
      e.preventDefault(); 
      var formURL = $(this).attr("action"); 

      $(this).ajaxSubmit({ 
         url : formURL, 
         async : false, 
         contentType: 'multipart/form-data', 
         success : function(data) { 
          if (data == "version match.") { 
           check = true; 
          } else { 
           check = false; 
          } 
         }, 
         error : function(jqXHR, 
           textStatus, 
           errorThrown) { 
          alert("error:"+errorThrown); 
          window.location = "<%=application.getContextPath()%>/pages/error/globalError.jsp"; 
         } 
        }); 
      e.preventDefault(); //STOP default action 
      // e.unbind(); //unbind. to stop multiple form submit. 
      return false; 
     }); 

Вот мой метод контроллера

@RequestMapping(value = "/sectioneight", method = RequestMethod.POST) 
public @ResponseBody Object sectioneight(@ModelAttribute("iepDTO") ProjectDTO iepDTO, 
     @RequestParam("id") String id) { 
    try { 
     List<MultipartFile> files = iepDTO.getPolicyBriefFiles(); 
     if(files!=null){ 
      for(MultipartFile file : files){ 
       String filePath = "C:/temp/" + file.getOriginalFilename(); 
       File dest = new File(filePath); 
       file.transferTo(dest); 
      } 
     } 
    } 
    catch (Exception e) { 
     System.out.println("Exception: "+e.getMessage()); 
     logger.error("ProjectController - sectioneight : "+ e.getMessage()); 
    } 
    return "redirect:home"; 

} 

Теперь проблема, если выбрать файл для загрузки и отправки формы все работает отлично. Но если я отправлю форму без выбора файла, она даст ошибку 400 Bad request в консоли браузера. Не могу найти, что не так.

Любые подсказки?

+0

Посмотрите в коде, который обрабатывает файл загрузить себя. Вероятно, он будет там. Но вы можете придерживаться утверждения в своем коде, который проверяет наличие файла. – putvande

+0

Почему сервер дает вам 400? не зная, что мы не можем реально помочь, кроме диких догадок. –

+0

Он даже не войдет в мой метод контроллера. Как проверить, что не так? –

ответ

0

Решено. Проблема была из-за ajax. Если я не выбираю файл, он отправляет пустую строку вместо файла.

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

if($("#policyBriefFiles").val()==""){ 
     $("#policyBriefFiles").prop('disabled', true); 
} 

Жизнь хорошо :)

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

  • Нет связанных вопросов^_^