Upload com Spring MVC
Nesse post vou mostrar passo a passo como fazer upload de imagens com Spring MVC.
Última atualização em: | 7026 Visualizações
Configurando as dependências no maven
Primeiro precisa adicionar as dependências commons-fileupload
e commons-io
no pom.xml
.
<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>
Não esqueça de adicionar as versões corretas de cada biblioteca dentro do properties do pom.xml para as propriedades commons-fileupload.version
e commons-io.version
.
As versões que utilizei no exemplo foram:
<properties>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-io.version>2.4</commons-io.version>
</properties>
Configure o CommonsMultipartResolver
O próximo passo é configurar o CommonsMultipartResolver
no spring MVC, veja como fazer isso dentro do arquivo de configuração do spring se a sua configuração estiver escrita em xml, caso contrario registre o bean dessa maneira:
<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>
Criando o formulário
A única regra para criar o formulário é que o mesmo contenha multipart/form-data
dentro do atributo enctype do form, e seu formulário estará apto a enviar as imagens.
<form action="/meu-projeto/upload" method="post" enctype="multipart/form-data">
<label for="file">Arquivo</label>
<input type="file" name="file" />
<input type="submit" name="submit" value="Upload" />
</form>
Por último em seu controller trate o upload
Crie um método em seu controller que receba a requisição do formulário criado acima e faça um cast da request para MultipartHttpServletRequest
e pronto já tem seu arquivo para gravar onde quiser.
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String upload(HttpServletRequest request) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("file");
return "redirect:upload-success";
}
Pronto, em quatro passos simples temos o upload pronto para uso. Se tiver dúvidas posta nos comentários que te ajudaremos.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.