2012-01-26 9 views
2

Я использую весну, весеннюю безопасность, спящий режим. Получил страницу jsp, где я пытаюсь загрузить файл, и backend у меня есть контроллер для захвата и хранения загруженного файла. Я использую tomcat. Я использую весеннюю безопасность для аутентификации входа. Получение следующей ошибки при загрузке файла Статус HTTP 405 - Метод запроса «POST» не поддерживается Любые идеи?Статус HTTP 405 - Метод запроса «POST» не поддерживается

ответ

4

Вам нужно будет убедиться, что ваш обработчик запроса может принять POST. Вы также можете настроить Spring на использование MultipartResolver, чтобы помочь вам в получении ваших частей запроса.

Конфигурация MultiPartResolver

@Bean(name = "mulitpartResolver") 
public MultipartResolver multipartResolver() { 
    if (multipartResolver == null) { 
     multipartResolver = new CommonsMultipartResolver(); 
    } 
    return multipartResolver; 
} 

Вот отображение запроса:

@RequestMapping(method = RequestMethod.POST, value = "/some/post/url") 
public void postFile(MultipartHttpServletRequest request) { 
    MultipartFile multipartFile = request.getFileMap().get("keyForFileInFormPost"); 
    ... 
} 

Обратите внимание, что иногда это не будет работать с Spring Security. Вы можете посмотреть на моем блоге здесь, используя multipartrequestresolvers с пружинной безопасности для помощи:

http://www.adamweigold.com/2012/01/using-multpartrequestresolvers-with.html

+0

Я использую следующие \t \t \t '@RequestM apping (value = "/additem/fileupload.htm", method = RequestMethod.POST) public String upload (запрос MultipartHttpServletRequest, модель ModelMap, главный директор) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request.getFileMap(). get (" keyForFileInFormPost "); MultipartFile multipartFile = multipartRequest.getFile ("file"); ' Должен ли я все еще использовать компонент mulitpartResolver? –

+0

У меня есть код выше и бросает java.lang.IllegalStateException: Текущий запрос не относится к типу [org.springframework.web.multipart.MultipartHttpServletRequest]: FirewalledRequest [[email protected] ] –

+0

Правильно, вам нужен компонент multipartResolver. Революторы Spring - это то, что на самом деле создает ваши параметры метода. Если для многостраничного запроса нет преобразователя, вы никогда его не получите. Если commonsmultipartresolver не работает, см. Мой пост в блоге. Возможно, вам придется написать пользовательский (их не так сложно написать). – aweigold

0

Просто определить боб «multipartResolver» в вашем Спринг контексте

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <!-- one of the properties available; the maximum file size in bytes --> 
     <property name="maxUploadSize" value="2097152"/> 
    </bean> 

И использовать

@ResponseBody 
@RequestMapping(value = "/{tenantId}/getEntityInfo", method = RequestMethod.POST) 
public ResponseEntity<String> getEntityInfo(
     @RequestParam(value = "xml", required = false) MultipartFile xml) { 
} 
Смежные вопросы