Загрузка нескольких файлов в Spring MVC с возможностью создания нескольких файлов в формате HTML5
Я пытаюсь загрузить несколько файлов, используя Spring 3.1.2 с @Controller и @RequestMapping.
Вот что я сделал и моя конфигурация.
HTML5 форма:
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
Контроллер метод:
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
мой конф:
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
Отправка формы доходит до метода addFileSystemImage. Данные для аргумента locId находятся здесь, но аргумент «files» не связан. Это систематически равно нулю независимо от того, какую комбинацию аргументов / имен полей / типов аргументов я пробовал.
Аргумент HttpServletRequest является org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest, и он содержит атрибут multiPartFile, который фактически содержит данные файла. Глядя на его значение в отладке дает мне
{files[]=[org.springframework.web.multipart.commons.CommonsMultipartFile@16afd7f9, org.springframework.web.multipart.commons.CommonsMultipartFile@728c2811, org.springframework.web.multipart.commons.CommonsMultipartFile@4f9aaed7]}
что означает, что мои файлы [] действительно здесь ... но почему-то они не прошли этап привязки данных должным образом ...
Теперь ... я знаю, что вы скажете мне, что я могу получить данные из запроса ... но я бы предпочел, чтобы это работало должным образом ... в стиле Sring ... :) и чтобы мой ArrayList из MultipartFile работал правильно населен.
Я что-то пропустил ? Кто-нибудь на самом деле сделал эту работу правильно? Что я могу сделать, чтобы заполнить этот ArrayList (или даже обычный Array)?
Я наткнулся на это решениеSpring MVC с загрузкой файлов ajax и MultipartFile что делает почти то же самое, что и я, но, очевидно, я должен делать что-то не так, поскольку это решение не работает для меня.
Примечание: мне удалось заставить его работать с загрузкой одного файла. Но моя задача сегодня - получить несколько файлов одновременно.
Любая помощь приветствуется.
Заранее спасибо.