Отправка картинки в SVG на email
Нужно при нажатии на кнопку отправить SVG файл в базу, а затем передать на почту.
<figure id="imapc" class="changeSide-1">
<object data="{{asset($product_slug->svg_url)}}" type="image/svg+xml" id="imap">
<p>К сожалению, вы используете устаревшую версию браузера, который не поддерживает интерактивную карту.</p>
</object>
</figure>
<form action="{{route('send-form')}}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="text" class="email" placeholder="Enter your email" name="email">
<input type="text" class="hidden-form-front" name="product_front" value="">
<input type="text" class="hidden-form-back" name="product_back" value="">
<button class="send-button">Send</button>
</form>
$('.send-button').click(function (e) {
var getFront = document.getElementById("imap").contentDocument.lastChild.outerHTML;
var imgsrc = 'data:image/svg+xml;base64,' + btoa(getFront);
$('.hidden-form-front').val(imgsrc);
});
При этом коде, в базу приходит закодированный в base файл, но на почту приходит пустой img. <img alt=""> |
https://css-tricks.com/a-guide-on-svg-support-in-email/
Попробуйте так: <embed type="image/svg+xml" src="data:image/svg+xml;base64,PHN2ZyB4bW...... не знаю на всех ли почтовых клиентах прокатит такое. И вообще, не ожидайте от почтовых клиентов и серверов такой поддержки как HTML. |
Спасибо, не получилось
|
Конвертируйте в графический формат, ибо с почтовыми клиентами на моб. устройствах еще печальнее будет.
|
Вот мой код за конвертацию в png
var getFront = document.getElementById("imap").contentDocument.lastChild.outerHTML;
var imgsrc = 'data:image/svg+xml;base64,' + btoa(getFront);
var canvas = document.querySelector("canvas"),
context = canvas.getContext("2d");
canvas.setAttribute('width', 526);
canvas.setAttribute('height', 233);
var image = new Image;
image.src = imgsrc;
image.onload = function () {
context.drawImage(image, 0, 0);
var canvasdata = canvas.toDataURL("image/png");
canvas.parentNode.removeChild(canvas);
$('.hidden-form-front').val(canvasdata);
};
Но теперь в базу ничего не приходит. |
Цитата:
|
ссылку в base64. Вот такого вида: data:image/png;base64,iVBORw0KGgoAAA...
|
Цитата:
Если на сервере нечем конвертировать SVG, пусть будет клиентом, но получая это как base64, сохраняйте ее как картинку на диск, зачем забивать базу картинками? |
Как сохранить картинку на диск? Через
<input type="file">мне не подходит. У меня на сайте есть картинка в SVG, пользователь может поменять цвет этой картинки на самом сайте, а затем уже отредактированная картинка должна быть отправлена на email. |
Цитата:
$img = base64_decode($_POST['product_front']); Конечно и удостоверится нужно, что это изображение. Можно и не сохранять на диск, если SVG, это рабочий формат, а изображение только для отправки почтой, то $img и отправлять, без сохранения на диск. |
| Часовой пояс GMT +3, время: 06:32. |