У меня есть инструмент для рисования на холсте с кнопкой сохранения.Когда вы нажимаете кнопку сохранения, он выполняет этот код.
function saveDrawing() {
var url = canvas.toDataURL();
w = window.open('saveimage.php');
w.onload = function(){
var placeholder = w.document.getElementById("placeholder");
placeholder.src = url;
};
}
Изображение отображается в новом окне в элементе-заполнителе.На этой странице я хочу добавить две кнопки: одну для загрузки изображения в формате .png, а другую для отправки png по электронной почте вместе с некоторыми данными формы.Я понимаю, что php должен использоваться для обработки вещей на стороне сервера.Я посмотрел в Интернете и нашел это.
AJAX-запрос в saveimage.php:
function saveViaAJAX(){
var placeholder = document.getElementById("placeholder");
var canvasData = placeholder.src;
var postData = "canvasData="+canvasData;
var ajax = new XMLHttpRequest();
ajax.open("POST",'save.php',true);
ajax.setRequestHeader('Content-Type', 'canvas/upload');
ajax.send(postData);
}
и save.php:
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen( 'drawing.png', 'wb' );
fwrite( $fp, $unencodedData);
fclose( $fp );
}
?>
Кнопка сохранения в saveimage.php выглядит следующим образом:
<button onclick="saveViaAJAX();" class="button">
Я ничего не получаю при нажатии кнопки.Это даже лучший способ подойти к этому?Или я должен перейти от dataToURL ();прямо быть php для декодирования и хранения и включения переменной php в мой элемент-заполнитель?Нужна ли мне для этого сессия?Немного потерян на этом.Серверная сторона не моя сильная сторона.Заранее спасибо!