Ho un file PDF che viene scaricato su tutti i browser ad eccezione di Firefox/Safari. Lo apre nella finestra del browser invece del download del file. Il mio sito è in esecuzione su node.js e è ospitato in Azure. Il download degli utenti del file proviene dallo storage BLOB di Azure, quindi sospetto che possa trattarsi di un problema CORS.AngularJS forza Firefox/Safari per scaricare il file anziché aprire nel browser
Ecco il mio codice lato client per il download:
<a href="{{fileURL}}" class="btn btn-default" download="myfile.pdf">Download File</a>
ecco il codice lato server:
$scope.fileURL = 'https://myblob.blob.core.windows.net/8282020/myfile.pdf';
Aggiornamento: Sono in grado di aggiungere la disposizione dei contenuti impostando il proprietà BLOB in Azure per la guida in basso, e sta visualizzando la disposizione come "allegato" ma in FireFox/Safari è ancora aperta nel browser. È possibile che questo sia bloccato poiché lo spazio di archiviazione BLOB di Azure potrebbe essere visualizzato come CORS?
Aggiornamento 2: L'aggiunta dei seguenti alla mia tag HTML sembra funzionare in Firefox (ma non Safari), che cosa è questo il modo giusto per gestire questa situazione tutti i browser
type="application/octet-stream"
Update 3: Sembra che la disposizione del contenuto e il tipo di contenuto tramite Node funzionino. Devo chiedere, è questa la strada giusta?
blobSvc.setBlobProperties(containerName, filename, { contentDisposition: 'attachment', contentType: 'application/octet-stream' }, function (error, result, response) {
// result code here....
})
Questo potrebbe essere utile http://stackoverflow.com/questions/11353425/force-a-browser-to-save-file-as-after-clicking-link –
Ho già il tag di download, funziona in alcuni browser ma non Safari e Firefox – Kode
È possibile aggiungere un'intestazione "Content-disposition: attachment" alla risposta che serve al file? – theadriangreen