Hallo mensen,

Ik was vandaag eens aan het spelen met een het maken van een online WhiteBoard: http://vandesteeg.org/
Nu vroeg ik mij af of het mogelijk is om het plaatje wat je maakt vervolgens op te slaan op mijn webhost. Dus met een form.

Iemand enig idee ?

Mvg, Bas
canvas.toDataURL(); (canvas is het object, de variabele van jouw div) dat wordt dan een base64 encoded string...dusals je het dan als img op wil slaan kun je het bestand met base64_decode decoderen en dan opslaan als bestand
Oke,
Heb het nu zo :

<script type="text/javascript">
function UploadPic() {
    
    // Generate the image data
    var Pic = document.getElementById("canvas").toDataURL("image/png");
    Pic = Pic.replace(/^data:image\/(png|jpg);base64,/, "")

    // Sending the image data to Server
    $.ajax({
        type: 'POST',
        url: 'save.php',
        data: '{ "imageData" : "' + Pic + '" }',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (msg) {
            alert("Done, Picture Uploaded.");
        }
    });
}
</script>

Save.php

<?php
  if (array_key_exists('imageData',$_REQUEST)) {
    $imgData = base64_decode($_REQUEST['imageData']);

    // Path where the image is going to be saved
    $filePath = 'images/';

    // Delete previously uploaded image
    if (file_exists($filePath)) { unlink($filePath); }

    // Write $imgData into the image file
    $file = fopen($filePath, 'w');
    fwrite($file, $imgData);
    fclose($file);
  }
?>

Maar hij doet niks, en ik heb op google gezocht maar kan niks vinden, maybe weet jij nog wat ?
waarom zou je in javascript de data:image gedeelte er afgooien?? doet dat serverside...dan kun je daarmee weten wat je aan het opslaan bent en hoe het bestand moet heten (welke extensie etc) ;)

doe iets als file_put_contents('/tmp/'. $_REQUEST['id'].'.'.$base64decodedExtension, $base64_decodedstring);
Wacht, volgens mij ben ik het een beetje kwijt en haal alles door elkaar.
Dus : Pic = Pic.replace(/^data:image\/(png|jpg);base64,/, "") moet weg?
En ik moet in save.php : file_put_contents('/tmp/'. $_REQUEST['id'].'.'.$base64decodedExtension, $base64_decodedstring);
toevoegen. Maar waar ?
ja die kan weg...en dan ga je in php dat geheel parsen...dan weet je welke extensie je hebt...

en op de plaats waar jij nu heel moeilijk doet met een file wegschrijven doe je nu file_put_contents(...);
Oke, ik heb nu het volgende in save.php :
<?php
if (array_key_exists('imageData',$_REQUEST)) {
$imgData = base64_decode($_REQUEST['imageData']);



file_put_contents('/tmp/'. $_REQUEST['imageData'].'.'.$base64decodedExtension, $imgData);

}
?>
Begrijp alleen niet wat er met $base64decodedExtension moet gebeuren.

Reageren