1UnitedPower: Download-Button

Beitrag lesen

Man kann sie [Bilder] auf ein Canvas zeichnen lassen

Verstehe ich nicht. Wie soll das gehen?

Wir haben glaube ich aneinander vorbei geredet. Du sprachst vom Cache, ich davon, dass die Bilder schon angefragt wurden und deswegen im DOM zur Verfügung stehen.

und dann geht's weiter mit der toDataURL oder toBlob.

Das kann ich mir tatsächlich vorstellen. Aber wie bekomme ich die Bilddaten in mein canvas-Element?

Wie gesagt, die Bilder werden nicht aus dem Cache geladen, sondern es wird davon Nutzen gemacht, dass die Bilder im DOM verfügbar sind. Dafür bietet die Canvas-API die Methode drawImage an.

Und wenn ich sie da hinein bekomme, wieso bräuchte ich da überhaupt den Umweg über dieses Element?

Der Umweg ist erforderlich, um an die Binärdaten des Bildes zu gelangen. Das image-Interface bietet leider keine Möglichkeit dazu. Das Canvas-Element muss allerdings nicht erst in das Dokument eingehangen werden, es reicht das Element zu erstellen, um die API nutzen zu können.

In den meisten Fällen würde ich Content-Disposition dennoch als Aufgabe des Servers betrachten. Die Javascript-Variante hat allerdings den Vorteil, dass sie auch noch funktioniert, wenn die Seite zwischendurch ihre Internet-Konnektivität verliert. Ganz grob gesagt, benutze ich für Standard-Webseiten serverseitige Techniken, bei Singel-Page-Web-Apps in der Regel clientseitige. Das ist natürlich keine Faustregel und unterscheidet sich von Anwendungsfall zu Anwendungsfall. Wie immer gilt es die Vor- und Nachteile abzuwägen.

Falls Interesse besteht, bastel ich gerne mal ein Beispiel-Skript.