I have a javascript code like this
var testCanvas = document.getElementById('canvas-1');
var canvasData = testCanvas.toDataURL("image/png");
var ajax = new XMLHttpRequest();
ajax.open("POST",'http://www.domain.com/imgsave.php',true);
ajax.setRequestHeader('Content-Type', 'canvas/upload');
ajax.send("canvasData"+canvasData );
My php code is like this
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// Get the data
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen( 'test.png', 'wb' );
fwrite( $fp, $unencodedData);
fclose( $fp );
echo "saved";
}
else{
echo "no raw data";
}
When executing this code i got a zero size png file image? Whats the problem with my code?
I had to do this recently myself.
First I put my canvasData into a hidden field and posted it to my PHP page.
It comes back in this format:
data:image/png;base64,iVBORw0......You need to split the data up first, as this:
data:image/png;base64,is header information. The rest is the encoded data.I then create the image on my server:
And then read it to do whatever I want with it.
I’m more than sure there is a much more elegant solution to this, but this has been working for me!
Check this for more info (possibly): My own question