Fazer download de arquivos usando Spring MVC ou Spring Boot

Postado em por Wolmir Cezer Garbin em Spring Framework | 126 Visualizações
Última atualização em:

Este post mostra resumidamente como utilizar a classe HttpEntity para fazer download de arquivos no spring mvc.

Algumas vezes é necessário fazer o download de uma imagem, xml ou arquivo pdf a partir do seu controller. Para auxiliar nesta tarefa podemos fazer o uso do HttpEntity do Spring.

Veja o exemplo de sua utilização:

@RequestMapping(method = RequestMethod.GET)    
public HttpEntity<byte[]> download(String imageName) {

 byte[] arquivo = //carrega os bytes de um arquivo
 HttpHeaders httpHeaders = new HttpHeaders();

 httpHeaders.add("Content-Disposition", "attachment;filename=\""+ imageName +"\"");

 HttpEntity<byte[]> entity = new HttpEntity<byte[]>( arquivo, httpHeaders);

 return entity;
}

Basta adicionar os bytes do arquivo e passar seu nome para fazer o download.

Existem vários outros código que permitem esta mesma funcionalidade, porém esta é uma forma simples e prática.

Veja o código completo do controller abaixo:

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

@Controller
public class SampleController {

    @RequestMapping(value = "/download", method = RequestMethod.GET)
    public HttpEntity<byte[]> download() throws IOException {

        byte[] arquivo = Files.readAllBytes( Paths.get("/home/wolmir/minha-imagem.jpg") );

        HttpHeaders httpHeaders = new HttpHeaders();

        httpHeaders.add("Content-Disposition", "attachment;filename=\"minha-imagem.jpg\"");

        HttpEntity<byte[]> entity = new HttpEntity<byte[]>( arquivo, httpHeaders);

        return entity;
    }

}
```	

Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

Posts relacionados


Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar