Uso questo codice per scaricare il file excel dal server.Download di file dal risultato ajax utilizzando blob
$.ajax({
headers: CLIENT.authorize(),
url: '/server/url',
type: 'POST',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(jsonData),
success: function (data) {
alert('Data size: ' + data.length);
var blob = new Blob([data], { type: "application/vnd.ms-excel" });
alert('BLOB SIZE: ' + data.length);
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
document.location = downloadUrl;
},
});
L'esperienza problema che ho è che, anche se i dati e le dimensioni sono identiche blob, il momento document.location viene assegnato sono richiamato per scaricare almoste due volte più grande file di Excel. E quando provo ad aprirlo, Excel si lamenta del formato di file sbagliato e il file aperto contiene molti rifiuti, anche se il testo richiesto è ancora lì.
Qualche idea che cosa sta causando questo e come evitarlo?
Non penso che sia una grande idea. Perché non lasciare che il server spinga il file nel browser per un normale flusso di download. Questo sembra molto innaturale, a meno che tu non abbia una ragione molto specifica per farlo, come un qualche tipo di Proxy o analisi online, ma sta andando a thrash browser memeory. – ppumkin
Prova ad impostare il tipo di contenuto su 'arrayBuffer' – levi
@ppumkin, sfortunatamente devo soddisfare i requisiti. Non riesco a memorizzare il file sul server e ho bisogno di passare l'intestazione di autorizzazione per ottenere il file. – SMart