Ho scritto codice che utilizza $ http angolare per scaricare un file. Il nome del file è non specificato nell'URL. L'URL contiene un identificativo univoco per il file, che viene recuperato dall'esterno dell'applicazione.
Quando si chiama $http.get(myUrl)
, tutto funziona correttamente; il file viene recuperato e posso accedervi nel mio gestore di callback, ma non riesco a vedere come ottenere il nome del file. Catturare la risposta crudo con Fiddler, vedo questo:
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!
Da quanto sopra, è chiaro che il server invia indietro il nome del file nel "Content-Disposition", ma non ho trovato comunque per accedervi entro il mio richiamo angolare. Come ottengo il nome del file dalle intestazioni?
Modifica in risposta alla risposta qui sotto: Avrei detto prima che ho già provato response.headers()
. Restituisce Object {content-type: "application/octet-stream", cache-control: "private"}
, quindi non trovo Content-Disposition per qualche motivo. response.headers('Content-Disposition')
restituisce null
.
se 'response.headers ('Content-Disposition') restituisce null', c'è chiaramente qualcosa di sbagliato. La risposta di @andrew funziona perfettamente – spankmaster79
hai trovato una soluzione? Ho esattamente lo stesso problema: Fiddler mostra chiaramente un'intestazione di disposizione del contenuto corretta, ma nessuna delle soluzioni seguenti funziona: response.headers ('Content-Disposition') restituisce null – fikkatra
Sono stato in grado di farlo funzionare nel contesto del particolare compito che stavo facendo, ma non ho una buona risposta generale. –