Ich habe Code geschrieben, der Angular $ http verwendet, um eine Datei herunterzuladen. Der Name der Datei ist nicht in der URL angegeben. Die URL enthält eine eindeutige Kennung für die Datei, die von außerhalb der Anwendung abgerufen wird.
Wenn $http.get(myUrl)
aufgerufen wird, funktioniert alles gut; Die Datei wird abgerufen, und ich kann in meinem Callback-Handler auf sie zugreifen, aber ich kann nicht sehen, wie der Name der Datei abgerufen wird. Erfassung die rohe Reaktion mit Fiddler, sehe ich:
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!
Aus dem Vorstehenden ist es klar, dass der Server den Namen der Datei, in der „Content-Disposition“ sendet zurück, aber ich habe nicht gefunden sowieso um es innerhalb meines Angular Callbacks zu erreichen. Wie bekomme ich den Namen der Datei aus den Headern?
bearbeiten als Antwort unten zu beantworten: ich erwähnt habe, sollte vor, dass ich response.headers()
schon versucht. Es gibt Object {content-type: "application/octet-stream", cache-control: "private"}
zurück, also bekomme ich aus irgendeinem Grund immer noch keine Content-Disposition. response.headers('Content-Disposition')
gibt null
zurück.
Wenn 'response.headers ('Content-Disposition') null zurückgibt ', ist eindeutig etwas nicht in Ordnung. Die Antwort von @andrew funktioniert einwandfrei – spankmaster79
hast du eine Lösung gefunden? Ich habe genau das gleiche Problem: Fiddler zeigt deutlich eine korrekte Inhaltsdisposition header, aber keine der folgenden Lösungen funktioniert: response.headers ('Content-Disposition') gibt null – fikkatra
Ich konnte es im Kontext der jeweiligen arbeiten Aufgabe, die ich gemacht habe, aber ich habe keine gute allgemeine Antwort. –