2009-07-29 27 views
7

Tôi đã chuyển đổi nội dung của phần tử canvas thành dữ liệu (Lược đồ URI) bằng cách sử dụng toDataURL() ($contact_image_data) và tôi muốn gửi email này dưới dạng tệp đính kèm. Đây là cách tôi đã thiết lập PHPMailer:PHPMailer, AddStringAttachment và 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); 

Tôi tự hỏi nếu điều này thực sự có thể thực hiện được không, và nếu có thì tôi sẽ mất những bước nào.

Tôi có thể gửi email, đính kèm tệp có tên “test.png” chứa nội dung của $contact_image_data nhưng không thực sự tạo hình ảnh.

Mọi trợ giúp sẽ là nhiều đánh giá cao.

Samuel.

Trả lời

2

Có thể thực hiện được. Bạn đang gọi toDataURL() với loại MIME 'image/png' để nó biết cách xuất nó?

Hãy thử chia nhỏ tập lệnh của bạn thành hai thành phần - đảm bảo bạn thực sự có PNG rồi thử gửi thư cho nó.

Ví dụ, sẽ test.png mở trên máy tính của bạn khi viết? ..

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

Hy vọng rằng sẽ giúp một chút!

+0

Cảm ơn bạn, Đó là thực sự hữu ích, đó là chỉ sau khi chơi với 'fwrite' mà tôi tìm thấy http: //canvaspaint.org/blog/2007/01/saving-images/#comments đã cho tôi câu trả lời của tôi. Chúc mừng! –

+0

Phiên bản đã lưu trữ của liên kết được đề cập ở trên nhận xét: https://web.archive.org/web/20110305022152/http://canvaspaint.org/blog/2007/01/saving-images/ – danShumway

13

Hóa ra tôi cần tước data:image/png;base64, phần và base64_decode() dữ liệu:

$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

Cảm ơn điều này thực sự đã giúp tôi rất nhiều . hoạt động hoàn hảo! – Julez