Весенняя многокомпонентная загрузка

Я пытаюсь написать контроллер и форму, которая может обрабатывать многокомпонентную загрузку файла и передачу некоторых других данных. Сначала я сделал базовую форму следующим образом:

<form:form method="POST" commandName="myForm">

тогда все в порядке, но, конечно, без многокомпонентной обработки. Затем я добавляю часть enctype следующим образом:

<form:form method="POST" commandName="myForm" enctype="multipart/form-data">

Тогда вся моя форма испорчена, и все атрибуты дают NullPointers. Не работает даже простой атрибут имени строки. Также я добавил:

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

Так что я действительно понятия не имею, в чем проблема. Любой комментарий очень поможет. Спасибо заранее.


person Sorex    schedule 04.03.2012    source источник


Ответы (1)


Мы используем CommonsMultipartResolver в нашем проекте. Это происходит так. В вашем applicationContext.xml:

<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="1048576000"/>
    <property name="defaultEncoding" value="UTF-8" />
</bean>

Затем отправьте запрос в MultipartHttpServletRequest:

public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    if (!(req instanceof MultipartHttpServletRequest)) {
        error(resp, "Invalid request (multipart request expected)");
        return null;
    }
Map<String, MultipartFile> files = ((MultipartHttpServletRequest)req).getFileMap();
... do thomething with the files
person Dmitry Negoda    schedule 04.03.2012
comment
Теперь я получаю ClassCastException, но я думаю, что моя проблема в основном в том, что когда я добавляю enctype, мой fomr сходит с ума, и Spring не может как-то с этим справиться, но не знаю почему, я добавил тот же bean-компонент, что и вы, и не работает... - person Sorex; 04.03.2012
comment
enctype необходим для загрузки файлов, вы не можете избавиться от них. Ошибка должна быть тривиальной: вы отредактировали не тот файл, или не добавили контроллер инструментов или что-то в этом роде. - person Dmitry Negoda; 04.03.2012
comment
истинная вещь. конечно, я отредактировал неправильный xml... ненавижу, когда получаю эти маленькие ошибки и отлаживаю их часами... В любом случае, спасибо за помощь;) - person Sorex; 04.03.2012