Fazer download de arquivos usando Spring MVC ou Spring Boot

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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Spring Framework - TUTORIAL

Última atualização em: | 15630 Visualizações

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;
    }

}
```	


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!