2012-01-10 4 views
1

Я хочу отличить httpServletRequest в multipartHttpServletRequest. Когда я пытаюсь это сделать, происходит ClassCastException.HttpServletRequest to MultipartHttpServletRequest: ClassCastException

MultipartHttpServletRequest request = (MultipartHttpServletRequest)req; 

Эта ошибка возникла только для вызова AJAX, для формы подать ее не происходит.

Я сделал все необходимые шаги следующим образом:

  1. Использование commons-fileupload.jar
  2. Набор enctype="multipart/form-data"
  3. Определение multiparResolver компонента в контексте весной.

Пожалуйста, помогите.

ответ

1

Да, с помощью Ajax вы не можете загрузить содержимое файла, так как запрос не имея пружину содержимого файла не может подготовить MultipartHttpServletRequest, который вызывает ClassCastException. Затем вы должны использовать технику использования iframe в html для загрузки файла, давая ajax стиль загрузки.

+0

может рассказать подробнее о том, как использовать iframe в html для загрузки файла с помощью ajax –

+0

Но концепция проста. Независимо от того, что появляется на экране в виде формы, мы фиксируем значения формы для отправки (путем возврата false для того, чтобы не отправлять это), и готовить скрытый iframe на лету в javascript, а также готовить ту же форму и элементы формы с одинаковыми значениями и отправляет этот iframe. Есть много учебников о том, как мы можем это сделать, используя javascript и iframe. google для 'использования iframe для загрузки файлов', чтобы понять, как мы можем это сделать. – Pokuri

0

Чтобы получить MultipartHttpServletRequest, попробуйте этот

MultipartHttpServletRequest multiPartRequest = new DefaultMultipartHttpServletRequest(req); 
+0

Спасибо за ответ. Я пытаюсь это, но java.lang.IllegalStateException: возникло многопользовательское запрос не инициализированное исключение. –

+0

Пожалуйста, прочитайте ссылку MultipartHttpServletRequest [здесь] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-multipart) и посмотрите, нет. –

1

Помимо того, что

<form method=<method> action=<url> enctype="multipart/form-data"></form> 

вы должны иметь

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 

в файле конфигурации пружины.

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