Я пытаюсь загрузить несколько файлов с помощью 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
}
my conf:
<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" не связан. Это систематически null, независимо от того, какую комбинацию аргументов/полей/типов аргументов я пробовал.
Аргумент HttpServletRequest представляет собой org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest и содержит атрибут multiPartFile, который фактически хранит данные файла. Глядя на его значение в debug, я получаю
{files[]=[[email protected]6afd7f9, [email protected]28c2811, [email protected]f9aaed7]}
что означает, что мои файлы [] действительно здесь... но каким-то образом он не прошел шаг привязки данных правильно...
Теперь... Я знаю, что вы скажете мне, что я могу получить данные из запроса... но я предпочел бы, чтобы это работало правильно... Sring way...:) и у меня есть ArrayList из MultipartFile правильно заполнен.
Я что-то упустил? Кто-нибудь действительно сделал эту работу должным образом? Что я могу сделать, чтобы заполнить этот ArrayList (или даже обычный массив)?
Я прошел через это решение Spring MVC с загрузкой файла ajax и MultipartFile, который делает почти то же самое, что и я, но, очевидно, я должен делать что-то неправильно, потому что это решение не работает для меня.
Примечание. Мне удалось заставить его работать с одиночными загрузками файлов. Но сегодня моя задача - получить сразу несколько файлов.
Любая помощь оценивается.
Спасибо заранее.