Napisałem kod, który używa Angular $ http do pobrania pliku. Nazwa pliku to , a nie określona w adresie URL. Adres URL zawiera unikalny identyfikator pliku, który jest pobierany spoza aplikacji.
Po wywołaniu $http.get(myUrl)
wszystko działa poprawnie; plik jest pobierany i mogę uzyskać do niego dostęp w moim programie obsługi wywołania zwrotnego, ale nie widzę sposobu pobrania nazwy pliku. Przechwytywanie surową odpowiedź z Skrzypek, widzę to:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 54
Content-Type: application/octet-stream
Server: Microsoft-IIS/8.5
Access-Control-Allow-Origin: http://www.example.com/getFile/12345
Access-Control-Allow-Credentials: true
Content-Disposition: attachment; filename=testfile.txt
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 09 Oct 2015 20:25:49 GMT
Lorem ipsum dolar sit amet! The contents of my file!
Z powyższego jasno wynika, że serwer wysyła z powrotem nazwę pliku w polu „Content-Disposition”, ale nie znalazłem w każdym razie, aby uzyskać do niego dostęp w ramach mojego angularnego wywołania zwrotnego. Jak uzyskać nazwę pliku z nagłówków?
Edycja w odpowiedzi odpowiedzieć poniżej: powinny Wspomniałem wcześniej, że już próbował response.headers()
. Zwraca ona Object {content-type: "application/octet-stream", cache-control: "private"}
, więc nadal nie otrzymuję dyspozycji zawartości z jakiegoś powodu. response.headers('Content-Disposition')
zwraca null
.
jeśli 'response.headers ('Content-Disposition') zwróci wartość null" jest wyraźnie coś nie tak. Odpowiedź od @andrew działa idealnie – spankmaster79
znalazłeś rozwiązanie? Mam dokładnie ten sam problem: Fiddler wyraźnie pokazuje poprawny nagłówek zawartości, ale żadne z poniższych rozwiązań nie działa: response.headers ("Content-Disposition") zwraca null – fikkatra
Udało mi się sprawić, by działało w kontekście konkretnego Zadanie, które robiłem, ale nie mam dobrej ogólnej odpowiedzi. –