Nicht in der Lage zum download der pdf-blob-url in Safari
Derzeit mit FileReader öffnen und anzeigen, PDF-Datei, die funktioniert auf Chrome. Jedoch, wenn die pdf-Datei geöffnet wird, auf "Safari" und klicken Sie auf den download-button, passiert nichts.
var reader = new FileReader();
reader.onloadend = function(e) {
$window.location.href = reader.result;
}
reader.readAsDataURL(file);
Das passiert bei mir genauso. @Tyler Hast du eine Lösung finden?
Ich habe nicht, ich habe bemerkt, dass der IE nicht für blob-urls über eine gewisse Länge, also wechselte ich auf eine server-Lösung.
siehe meine Letzte Antwort
Ich habe nicht, ich habe bemerkt, dass der IE nicht für blob-urls über eine gewisse Länge, also wechselte ich auf eine server-Lösung.
siehe meine Letzte Antwort
InformationsquelleAutor Tyler Pflueger | 2016-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem er verbrachte einen ganzen Tag arbeiten auf einem ähnlichen Problem, habe ich verstanden, wo das problem war, so kann ich nun mein wissen mit Ihnen.
Im Grunde ist diese Art der Probleme, die generiert werden, wenn Sie machen die
Blob
innerhalb der bereits geöffneten browser-tab, so dass Ihre Seiten-url ändert sich in etwas wie:blob:http://localhost:8080/9bbeffe1-b0e8-485d-a8bd-3ae3ad9a0a51
Die falsche Prozedur für die eine pdf wäre so etwas wie dieses:
var fileBlob = new Blob([response.data], {type: 'application/pdf'});
window.location.hfref = fileBlob;
Warum funktioniert das nicht?
Gut, Sie können finden Sie in der pdf-Ausgabe auf der Seite könnte man damit täuschen zu denken, dass Ihre pdf-Datei wird geladen, in Ordnung. Jedoch, wenn Sie entweder versuchen, die Seite zu aktualisieren oder laden Sie die pdf-Datei auf Ihrem Computer, es funktioniert nicht.
WTH?
Also, anfangs war ich wirklich denken, irgendeine Art von schwarzer Magie geht um den browser, dann habe ich herausgefunden, das problem:
Die Datei nicht vorhanden ist aber nur cache gespeichert im browser. Also, wenn Sie generieren blob und leiten Sie Ihre aktuelle Registerkarte, zeigen Sie auf die erzeugte blob-url, verlieren Sie den cache.
Nun macht alles Sinn, oder?
Die nur denken, Sie tun können, ist das öffnen der Blob-url in einem neuen tab mit:
window.open(fileBlob, '_blank');
Problem gelöst.
Leider ist dies die beste Lösung die ich bisher gefunden. Wenn Sie einen besseren Weg kennen, bitte teilen. Dank für die Hervorhebung dieses Szenario, ich hoffe, jemand wird Sie nutzen für Ihren Kommentar.
Check meine neue Antwort. Hoffe es hilft jemanden mit dem gleichen Problem, nachdem alle... heutzutage adblock ist Häufig verwendet
InformationsquelleAutor andreasonny83
Nachdem Sie durch das gleiche Szenario wie @andreasonny83 Antwort, plus, die die Kopfschmerzen Thema adblock, Schloss den tab geöffnet mit
window.open
im Bruchteil einer Sekunde, ich habe eine Lösung gefunden, die für mich gearbeitet. Nicht sicher, ob es funktioniert in Safari, da ich keinen mac um es zu testen. Habe versucht über Firefox und Chrome. Ich bin mir sicher, dass wenn es nicht funktioniert, auf IE oder Safari gibt es einen workaround. Was ich Tat, war mit dem einbetten html5-Komponente, die als ein src, ein URL.createObject(blob) Objekt. So konnte ich zum Rendern/aktualisieren und zum download der pdf.Dann sind Sie einfach nur einbetten, dass pdf in einem
embed
tag wie diesem:Den Schlüssel zu nutzen, um die html5-tag einbetten. Es arbeitete schön. Natürlich müssen Sie einen Weg finden, die
embed
src Attribut. Ich bin mit der Reaktion und redux also ich benutze jsx, aber können Sie plain-vanilla-javascript oder was auch immer Sie mögen.InformationsquelleAutor tommyalvarez