У меня есть этот код, либо ajax не передает данные правильно, либо мой php не работает должным образом. Я знаю, что canvass сохраняет данные png, которые он записывает на страницу. Есть ли способ просто преобразовать его в файл и сохранить его из javascript?
START JAVASCRIPT: ——————-
<- получить элемент canvass и преобразовать в данные png ->
var canvas = document.getElementById("textCanvas"); var img = canvas.toDataURL("image/png");
<- END элемент canvass и преобразование в данные 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'; } }
<- END отправить в php-файл ->
END JAVASCRIPT: ——————-
START 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);
END PHP: ——————-
изменил 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
-человеки работают потрясающе 🙂