¿Cómo descargo un archivo con Angular2?
Tengo una aplicación WebApi / MVC para la que estoy desarrollando un cliente angular2 (para reemplazar MVC). Tengo problemas para entender cómo Angular guarda un archivo.
La solicitud está bien (funciona bien con MVC, y podemos registrar los datos recibidos) pero no puedo entender cómo guardar los datos descargados (principalmente sigo la misma lógica que enesta publicación) Estoy seguro de que es estúpidamente simple, pero hasta ahora simplemente no lo entiendo.
El código de la función componente está debajo. He intentado diferentes alternativas, la forma de blob debería ser la forma de ir tan lejos como lo entendí, pero no hay ninguna funcióncreateObjectURL
enURL
. Ni siquiera puedo encontrar la definición deURL
en ventana, pero aparentemente existe. Si uso elFileSaver.js
módulo Me sale el mismo error. Así que supongo que esto es algo que cambió recientemente o aún no se ha implementado. ¿Cómo puedo activar el archivo guardado en 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);
}
En aras de la exhaustividad, el servicio que recupera los datos está debajo, pero lo único que hace es emitir la solicitud y pasar los datos sin mapear si tiene éxito:
downloadfile(runname: string, type: string){
return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
.catch(this.logAndPassOn);
}