2014-11-30 5 views
5

캔버스 이미지를 서버에 저장하려고합니다. 파일을 저장할 수는 있지만 항상 0 바이트입니다. 내 코드에 무슨 문제가 있습니까?캔버스 이미지를 서버에 저장하십시오.

<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는 : 당신은 당신이 당신이 dataURL

둘째를 만들어하기 전에 변수 canvas을 정의 후 캔버스 에 색칠했는지 확인하기 위해

<?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

어디에서 캔버스에 페인트합니까 – NatureShade

+0

가능한 복제본 : http://stackoverflow.com/questions/13198131/how-to-save-a-html5-canvas-as-image-on-a-server – NatureShade

+0

I ' 네가 무슨 뜻인지 정말로 모르겠다. 위의 자바 스크립트와 같은 페이지에 페인트합니다. – user3080392

답변

4

우선이 , 당신은이 PHP 라인에서 img을 찾고있는 것처럼 보입니다 :

dataURL가 그 안에있는 일이 있는지 확인하기 위해 만든 후 마지막으로 당신이 console.log(dataURL)를 추가해야

data: { 
    imgBase64: dataURL 
} 

:

$img = $_POST['img']; 

(210)하지만 자바 스크립트는에 imgBase64로 정의된다.

+0

감사합니다. 문제는 당신이 제안한대로 'img'를 'imgBase64'로 바꿀 때 수정되었습니다. 'dataUrl'을 (를) 연결하려고했지만 작동하지 않았습니다. 또한, 게시하기 전에 내 코드에 console.log (dataURL)를 가지고 있지만 꺼 냈습니다. – user3080392

관련 문제