Наверное ни один веб портал не может обойтись без такой операции как загрузка файлов на сервер.
Особенно актуальная єта задача для больших веб приложений, которые разрабатываются в основном на java ee.
В этой заметке я рассмотрю как осуществляется аплоад файлов при использовании Spring фрэймоврка 2.5 (с использованием аннотаций).
Сначала нам необходимо зарегистрировать специальный бин - MultipartResolver, который будет сканировать все запросы к серверу и искать формы с типом multipart (т.е. с файлом для загрузки на сервер). Если такая форма найдётся этот бин передаст её для дальнейшей специальной обработки в сервлет MultipartHttpServletRequest, который и закачает наш файл.
<!-- MultipartResolver for parsing file uploads, implementation for Commons FileUpload -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
Всё это Spring сам делать не умеет, но хорошо это умеет делать Apache Commons FileUpload,
функциональность которого и вызывается через Spring Framework. Так что необходимо подключить commons-fileupload.jar и commons-io.jar библиотеки.
Настройка завершена, теперь код.
Создаём jsp страничку с multipart формой и единственным параметром file типа file. Назовём её например uploadFile.jsp:
<form action="uploadFile.html" method="post" encType="multipart/form-data">
<tr>
<td>Content</td>
<td><input type="file" name="file"><br></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Upload file"></td>
</tr>
</form>
Создаём класс контроллера.
Нам необходимо обрабатывать минимум 2 запроса. Первый - для отображения формы, через которую будет производиться загрузка файла, второй для обработки непосредственной загрузки файла (submit формы).
Например:
@Controller
class UploadController {
@RequestMapping(value = "/file.html", method = RequestMethod.GET)
public String setupUploadFile(){
return "uploadFile";
}
@RequestMapping(value = "/uploadFile.html")
public String processUploadPreview(
@RequestParam("file") MultipartFile file
){
// Сохраняем файл на диск...
// Содержание загруженного файла можно получить с помощь:
// file.getInputStream()
// имя и расширения файла можно извлечь из свойств
// file.getName() , file.getContentType()
return "redirect:index.html";
}
}
Это всё. Можно переходить к тестированию.
Особенно актуальная єта задача для больших веб приложений, которые разрабатываются в основном на java ee.
В этой заметке я рассмотрю как осуществляется аплоад файлов при использовании Spring фрэймоврка 2.5 (с использованием аннотаций).
Сначала нам необходимо зарегистрировать специальный бин - MultipartResolver, который будет сканировать все запросы к серверу и искать формы с типом multipart (т.е. с файлом для загрузки на сервер). Если такая форма найдётся этот бин передаст её для дальнейшей специальной обработки в сервлет MultipartHttpServletRequest, который и закачает наш файл.
<!-- MultipartResolver for parsing file uploads, implementation for Commons FileUpload -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
Всё это Spring сам делать не умеет, но хорошо это умеет делать Apache Commons FileUpload,
функциональность которого и вызывается через Spring Framework. Так что необходимо подключить commons-fileupload.jar и commons-io.jar библиотеки.
Настройка завершена, теперь код.
Создаём jsp страничку с multipart формой и единственным параметром file типа file. Назовём её например uploadFile.jsp:
<form action="uploadFile.html" method="post" encType="multipart/form-data">
<tr>
<td>Content</td>
<td><input type="file" name="file"><br></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Upload file"></td>
</tr>
</form>
Создаём класс контроллера.
Нам необходимо обрабатывать минимум 2 запроса. Первый - для отображения формы, через которую будет производиться загрузка файла, второй для обработки непосредственной загрузки файла (submit формы).
Например:
@Controller
class UploadController {
@RequestMapping(value = "/file.html", method = RequestMethod.GET)
public String setupUploadFile(){
return "uploadFile";
}
@RequestMapping(value = "/uploadFile.html")
public String processUploadPreview(
@RequestParam("file") MultipartFile file
){
// Сохраняем файл на диск...
// Содержание загруженного файла можно получить с помощь:
// file.getInputStream()
// имя и расширения файла можно извлечь из свойств
// file.getName() , file.getContentType()
return "redirect:index.html";
}
}
Это всё. Можно переходить к тестированию.
1 комментарий:
такой вопросик. в спринге начиная с версии 2.0 появился так называемый spring form tag.
возможно ли его использовать для того чтобы сделать аналог input type="file" ? так не хочется юзать spring:bind
Отправить комментарий