2009-07-29 72 views
7

我已經使用toDataURL()$contact_image_data)將canvas元素的內容轉換爲數據(URI方案),我想通過電子郵件將其作爲附件發送。這是目前我如何有PHPMailer的設置:PHPMailer,AddStringAttachment和Data URI方案

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

我想知道如果這實際上是可能的,如果是這樣,我錯過了什麼步驟。

我可以發送一封電子郵件,附上名爲「test.png」的文件,其中包含$contact_image_data的內容,但它實際上並不創建圖像。

任何幫助將很多讚賞。

塞繆爾。

回答

2

是的,應該是可以的。你是否用'image/png'MIME類型調用toDataURL(),以便知道如何輸出它?

試着把你的腳本分成兩個部分 - 確保你真的有一個PNG 然後嘗試郵寄它。

例如,寫入時會test.png您的計算機上打開?..

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

希望有點幫助!

+0

謝謝 這是真正有用的,它只是用`fwrite`,我發現這個HTTP播放後: //canvaspaint.org/blog/2007/01/saving-images/#comments這給了我我的答案。 乾杯! – 2009-07-29 19:43:11

+0

上面提到的鏈接的存檔版本評論:https://web.archive.org/web/20110305022152/http://canvaspaint.org/blog/2007/01/saving-images/ – danShumway 2014-08-05 05:20:47

13

事實證明,我需要剝離data:image/png;base64,部分和base64_decode()數據:

$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);