Mam aplikację WebApi / MVC, dla której tworzę klienta angular2 (w celu zastąpienia MVC). Mam pewne problemy ze zrozumieniem, jak Angular zapisuje plik.
Żądanie jest w porządku (działa dobrze z MVC i możemy zarejestrować otrzymane dane), ale nie mogę dowiedzieć się, jak zapisać pobrane dane (głównie kieruję się tą samą logiką, co w tym poście ). Jestem pewien, że jest to głupio proste, ale jak dotąd po prostu tego nie rozumiem.
Kod funkcji komponentu znajduje się poniżej. Próbowałem różnych alternatyw, tak kropelka powinna być droga, iść tak daleko, jak to rozumieć, ale nie ma funkcji createObjectURL
w URL
. Nie mogę nawet znaleźć definicji URL
w oknie, ale najwyraźniej istnieje. Jeśli używam FileSaver.js
modułu, pojawia się ten sam błąd. Myślę więc, że jest to coś, co ostatnio się zmieniło lub nie zostało jeszcze wdrożone. Jak mogę wyzwolić zapis pliku w 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);
}
Ze względu na kompletność usługa, która pobiera dane, znajduje się poniżej, ale jedyne, co robi, to wysłanie żądania i przekazanie danych bez mapowania, jeśli się powiedzie:
downloadfile(runname: string, type: string){
return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
.catch(this.logAndPassOn);
}