Existe alguma maneira recomendada para executar download de arquivos pelo AngularJS?
Por exemplo, abaixo um código simples que recebe um arquivo PDF e executa o download. Porém a única solução que eu achei é criar um link invisível na tela e executar um click no mesmo. Não achei muito prática essa solução, e gostaria de saber se o AngularJS possui alguma solução mais elegante para isso.
Grato!
Rest:
@GET
@Path("/url")
@Produces("application/pdf")
public Response getPDF() {
byte[] byteArray = servico.getPDF();
ResponseBuilder builder = Response.status(Status.OK)
.entity(byteArray)
.type("application/pdf");
return builder.build();
}
AngularJS:
$scope.pdf= function () {
$http.get('/url', {responseType: 'arraybuffer'})
.success(function(data) {
var file = data;
// TRECHO QUE EXECUTA O DOWNLOAD
var fileName = "teste.pdf";
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var fileURL = window.URL.createObjectURL(file);
a.href = fileURL;
a.download = fileName;
a.click();
})
.error(function(erro) {
console.log(erro);
});
};