Upload com Spring MVC
29 Sep 2010Esse post é um tutorial passo a passo para fazer upload com Spring MVC.
Os passos desdes posts foram feitos com o projeto template “Spring MVC Project” do SpringSource Tool Suite, a versão do Spring MVC utilizada foi a 3.0.1.RELEASE.
Primeiro passo
Adicionar as dependências commons-fileupload e commons-io no pom.xml.
<properties>
  <commons-fileupload.version>1.2.1</commons-fileupload.version>
  <commons-io.version>1.4</commons-io.version>
</properties>
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>${commons-fileupload.version}</version>
</dependency>
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>${commons-io.version}</version>
</dependency>
Segundo passo
Adicionar o CommonsMultipartResolver no mvc-config.xml. Graças a ele será possível fazer o cast (MultipartHttpServletRequest) request
<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="1000000" />
</bean>
Terceiro passo
Criar o formulário multipart/form-data para upload.
<form action="/meu-projeto/upload" method="post" enctype="multipart/form-data">
  <p>
    <label for="file">Arquivo para fazer upload</label>
    <input
    type="file" name="file" />
    <input type="submit" name="submit"
    value="Upload" />
  </p>
</form>
Quarto é último passo
Criar a action de upload.
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String upload(HttpServletRequest request) {
  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  MultipartFile multipartFile = multipartRequest.getFile("file");
  return "redirect:upload-success";
}