2009-07-29 7 views
7

Ich habe den Inhalt eines canvas Elements in Daten (URI Scheme) mit toDataURL() ($contact_image_data) konvertiert und ich möchte dies per E-Mail als Anhang senden. Dies ist zur Zeit, wie ich PHPMailer eingerichtet:PHPMailer, AddStringAttachment und Data URI Scheme

$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]"; 
$filename="test.png"; 
$encoding = "base64"; 
$type = "image/png"; 
$mail->AddStringAttachment($contact_image_data, $filename, $encoding, $type); 

Ich frage mich, ob dies tatsächlich möglich ist, und wenn ja, welche Schritte ich fehle.

Ich kann eine E-Mail senden, eine Datei mit dem Namen "test.png" anhängen, die den Inhalt von $contact_image_data enthält, aber es erstellt tatsächlich kein Bild.

Jede Hilfe wäre viel geschätzt.

Samuel.

Antwort

2

Ja sollte es möglich sein. Rufen Sie mit dem 'image/png' MIME-Typ toDataURL() auf, damit er weiß, wie er ausgegeben wird?

Versuchen Sie, Ihr Skript in zwei Komponenten zu zerlegen - stellen Sie sicher, dass Sie wirklich ein PNG dann versuchen, es zu versenden.

Zum Beispiel wird auf Ihrem Computer test.png geöffnet, wenn geschrieben? ..

<?php 
$contact_image_data="data:image/png;base64,iVBORw0KGgo[...]"; 
$fp = fopen('test.png', 'w'); 
fwrite($fp, $contact_image_data); 
fclose($fp); 
?> 

Hoffnung, das hilft ein wenig!

+0

Danke, Das ist wirklich hilfreich, es war nur mit 'fwrite' nach dem Spiel, dass ich diese http: //canvaspaint.org/blog/2007/01/saving-images/#comments was mir meine Antwort gab. Prost! –

+0

Archivierte Version des Links in der oben genannten Kommentar: https://web.archive.org/web/20110305022152/http://canvaspaint.org/blog/2007/01/saving-images/ – danShumway

13

Es stellt sich heraus, dass ich den data:image/png;base64, Abschnitt abzustreifen benötigt und base64_decode() die Daten:

$contact_image_data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA"; 
$data = substr($contact_image_data, strpos($contact_image_data, ",")); 
$filename="test.png"; 
$encoding = "base64"; 
$type = "image/png"; 
$mail->AddStringAttachment(base64_decode($data), $filename, $encoding, $type);   
+0

Danke das hat mir wirklich sehr geholfen . funktioniert perfekt! – Julez