Ho un'app WebApi / MVC per la quale sto sviluppando un client angular2 (per sostituire MVC). Sto riscontrando dei problemi nel capire come Angular salva un file.
La richiesta è ok (funziona bene con MVC e possiamo registrare i dati ricevuti) ma non riesco a capire come salvare i dati scaricati (sto seguendo principalmente la stessa logica di questo post ). Sono sicuro che è stupidamente semplice, ma finora non lo sto semplicemente afferrando.
Il codice della funzione componente è di seguito. Ho provato diverse alternative, il modo in cui blob dovrebbe essere la strada da percorrere per quanto ho capito, ma non c'è alcuna funzione createObjectURL
in URL
. Non riesco nemmeno a trovare la definizione di URL
in window, ma a quanto pare esiste. Se uso il FileSaver.js
modulo ottengo lo stesso errore. Quindi suppongo che questo sia qualcosa che è cambiato di recente o non è ancora stato implementato. Come posso attivare il salvataggio del file in A2?
downloadfile(type: string){
let thefile = {};
this.pservice.downloadfile(this.rundata.name, type)
.subscribe(data => thefile = new Blob([data], { type: "application/octet-stream" }), //console.log(data),
error => console.log("Error downloading the file."),
() => console.log('Completed file download.'));
let url = window.URL.createObjectURL(thefile);
window.open(url);
}
Per completezza, il servizio che recupera i dati è riportato di seguito, ma l'unica cosa che fa è emettere la richiesta e trasmettere i dati senza mappatura se riesce:
downloadfile(runname: string, type: string){
return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
.catch(this.logAndPassOn);
}