Сохранение графиков RGraph на локальном компьютере
У меня проблемы с сохранением изображений в локальный файл. Все остальные вещи выглядят хорошо, но изображение не просто сохранится. Вот фрагмент моего кода.
function saveImage(){
var xmlhttp;
xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//do something with the response
}
}
xmlhttp.open("POST","ajxstuff.php",true);
var oldCanvas = document.getElementById('cvs').toDataURL("image/png");
var img = new Image();
img.src = oldCanvas;
xmlhttp.setRequestHeader("Content-type", "application/upload")
xmlhttp.send(oldCanvas);
}
Вот файл ajxstuff.php
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// Get the data like you would with traditional post
$rawImage=$GLOBALS['HTTP_RAW_POST_DATA'];
// Remove the headers
$removeHeaders=substr($rawImage, strpos($rawImage, ",")+1);
// decode it from base 64 and into image data only
$decode=base64_decode($removeHeaders);
// save to your server
$saveName = 'C:\Users\Administrator\Downloads\image009.png';
$fopen = fopen($saveName, 'wb' );
fwrite( $fopen, $decode);
fclose( $fopen );
}
?>
1 ответ
Хорошо, вот мой пересмотренный ответ: вы можете вместо того, чтобы отправлять изображение как (как выглядит) файл, отправлять его как текст - поскольку это то, что вы получаете от toDataUrl() (представление изображения в кодировке base64).
$.post('ajxstuff.php',{
myChart: document.getElementById('cvs').toDataURL()
}, function ()
{
/* callback */
})
И в вашем PHP-скрипте данные будут отображаться в $_POST['myChart'] - и вы можете записать их в файл, подобный этому:
<?php
$data = base64_decode($_POST['myChart']);
file_put_contents('C:\Users\Administrator\Downloads\image009.png', $data);
?>