2014-11-30 31 views
5

Sto provando a salvare l'immagine del canvas sul server. Posso salvare il file, ma è sempre 0 byte. Cosa c'è che non va nel mio codice?Salva immagine canvas sul server

<script> 
function test(){ 
var canvas = document.getElementById("cvs"); 
var dataURL = canvas.toDataURL(); 

$.ajax({ 
    type: "POST", 
    url: "upload.php", 
    data: { 
    imgBase64: dataURL 
    } 
}).done(function(o) { 
    console.log('saved'); 

}); 

} 
</script> 

php:

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

Dove dipingi sulla tua tela – NatureShade

+0

possibile duplicato: http://stackoverflow.com/questions/13198131/how-to-save-a-html5-canvas-as-image-on-a-server – NatureShade

+0

I ' Non sono proprio sicuro di cosa intendi. Lo dipingo sulla stessa pagina del javascript sopra. – user3080392

risposta

4

Prima di tutto bisogna essere sicuri che hai dipinto sulla tela dopo è stato definito il canvas variabile e prima è stato creato il dataURL

Seconda , sembra che tu stia cercando img in questa linea di php:

$img = $_POST['img']; 

ma nel tuo javascript si sta definendo come imgBase64 in:

data: { 
    imgBase64: dataURL 
} 

infine si dovrebbe aggiungere console.log(dataURL) dopo la dataURL è stato creato per essere sicuri che ci sia qualcosa in esso.

+0

Grazie. Il problema è stato risolto quando ho sostituito "img" con "imgBase64" come suggerito. Avevo provato a collegare 'dataUrl' ma non funzionava. Inoltre, avevo console.log (dataURL) nel mio codice prima di postare, ma l'ho estratto. – user3080392