Как сохранить PNG-изображение на стороне сервера, из JavaScript-строки base64

У меня есть этот код, либо AJAX не передает данные правильно, или мой PHP не работает должным образом. я знаю, что холст сохраняет данные в формате png, пишет на странице. Есть ли способ просто преобразовать его в файл и сохранить его из JavaScript?

НАЧАТЬ JAVASCRIPT: ——————-

<- получить элемент холста и преобразовать в данные png ->

var canvas = document.getElementById("textCanvas");
var img = canvas.toDataURL("image/png");

<- КОНЕЦ элемента холста и преобразование в данные png ->

<- ОТПРАВИТЬ в php файл ->

var onmg = encodeURIComponent(img);
var xhr = new XMLHttpRequest();
var body = "img=" + onmg;
xhr.open('POST', "convertit.php",true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-Length", body.length);
xhr.setRequestHeader("Connection", "close");
xhr.send(body);
xhr.onreadystatechange = function () {
if (xhr.status == 200 && xhr.readyState == 4) {
document.getElementById("div").innerHTML = xhr.responseText;
} else {
document.getElementById("div").innerHTML = 'loading';
}
}

<- КОНЕЦ отправить в php файл ->

END JAVASCRIPT: ——————-

НАЧАТЬ PHP: ——————-

$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
file_put_contents('/uploads/file.png', $data);

КОНЕЦ PHP: ——————-

3

Решение

изменил php на ———>

define('UPLOAD_DIR', 'images/');
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . 'txtimg.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';

который я получил от ——>http://j-query.blogspot.com/2011/02/save-base64-encoded-canvas-image-to-png.html

-ура работает офигенно 🙂

3

Другие решения

Других решений пока нет …