Mam doświadczenie w backend C# i ASP.Net MVC. Teraz robię swoją pierwszą próbę na Angular 2. Zajmuje to trochę czasu, ale lubię większość z nich. Teraz utknąłem na prostym pobieraniu plików.Pobierz plik z MVC 5 do Angular 2
Przeczytałem wszystkie przykłady, które znalazłem tutaj na Stackoverflow, ale nadal nie dostaję mojego przykładu do pracy.
Na stronie serwera Mam ten kod C#:
public ActionResult DownloadPicture(long id)
{
var bytes = System.IO.File.ReadAllBytes("images\dummy.jpg");
return GetAttachement(bytes, "DummyFile.jpg");
}
private ActionResult GetAttachement(byte[] bytes, string fileName)
{
var contentType = MimeMapping.GetMimeMapping(fileName);
var contentDisposition = new System.Net.Mime.ContentDisposition
{
FileName = fileName,
Inline = true
};
Response.AppendHeader("Content-Disposition", contentDisposition.ToString());
return File(bytes, contentType);
}
po stronie klienta Mam ten kod maszynopis:
public pictureDownload(id: number): void {
let options = new RequestOptions({ search: new URLSearchParams("id=" + id) });
this.http.get(this.urlPictureDownload, options).subscribe((data: any) => {
// var blob = new Blob([data._body], { type: "image/jpeg" });
// var url = window.URL.createObjectURL(blob);
// window.open(url);
});
}
żądanie pochodzi się, by po stronie serwera. Tablica zostanie pobrana. Myślę, że mój problem leży po stronie klienta. Czy ktoś może mi pomóc?
Interesujące - Nie [próbuje tej] (https: //templth.wordpress.com/2014/11/21/handle-downloads-with-angle//) z [FileSaver.js] (https://github.com/eligrey/FileSaver.js). Zauważ "arraybuffer". Hth ... – EdSF
Czy istnieje powód, dla którego nie można po prostu użyć zwykłego starego linku do pliku? To najprawdopodobniej najłatwiejsze. – Casey
Wiem, naprawdę chciałbym, ale pliki nie znajdują się na dysku. Są one przechowywane w pamięci wewnętrznej, więc faktycznie mam je jako strumień. –