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.
Última atualização em: | 15588 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.