Ich habe ein kleines Stück Skript erstellt, das eine API ruft ein PDF zu erhalten und sendet die response als Arraybuffer.Chrome blockiert ein Blob-Objekt, wenn es als PDF-Download
diese Verwendung erstelle ich ein neues Blob und den Typ als ‚application/pdf‘
Um dies ich ein Ankerelement erstellen herunterladen zu zwingen, den Klecks geben und klicken Sie darauf.
Dies funktioniert lokal feines und auf anderen Browsern auf meinem Test-Server, sondern auf Chrome Ich konnte nicht bekommen - keine Datei im Download-bar.
Das PDF-Format ist auf jeden Fall als ich die URL die API in ein Register einfügen kann und sie und die Antwort von dem ursprünglichen API-Aufruf sehen ist mit dem Blob weitergegeben.
Beispielcode
var fileName = 'dummyFilename-' + offerId + '.pdf';
var blob = new window.Blob([resData], { type: 'application/pdf' });
var anchorElement = document.createElement('a');
var url = window.URL.createObjectURL(blob);
document.body.appendChild(anchorElement);
anchorElement.id = 'anchorElement';
anchorElement.hidden = 'true';
anchorElement.href = url;
if (typeof anchorElement.download !== 'undefined') {
anchorElement.download = fileName;
} else {
anchorElement.target = '_blank';
}
anchorElement.click();
Eigentlich fand ich, dass ich wirklich nur Blob brauchte, um das PDF zum Download in IE zu bekommen. Am Ende habe ich nur den Klick auf eine normale URL mit einem Download-Attribut gesetzt, um dies mit einer neuen Registerkarte zu erzwingen, die für Browser geöffnet wird, die dies nicht unterstützen. Ich bin mir immer noch nicht sicher, warum Chrome den Blob nicht korrekt behandelt hat. –