2013-03-13 5 views
-1

제 애플리케이션에서 base64 형식 이미지를 서버로 보내야합니다. 현재 내가하고있는 일은 서버에 base64 이미지 문자열을 보내고 서버에서 해당 문자열을 다시 가져올 때 이미지를 표시 할 수 없다는 오류가 발생했습니다. 이미지가 손상되었습니다. base64 형식 이미지를 보내고 가져 오는 정확한 방법은 무엇입니까? 다음과 같이 내가 사용하고 코드는 다음과 같습니다 JS base64로 이미지 소스를 보내는 :base64 이미지를 서버로 보내기

var imageObj = $("#target")[0]; 
var canvas = $("#preview")[0]; 
var context = canvas.getContext("2d"); 
context.drawImage(imageObj, c.x, c.y, c.w, c.h, 0, 0, canvas.width, canvas.height); 
vData = canvas.toDataURL(); 
$('#crop_result').attr('src', vData); 

function saveCroppedImage() 
{ 
    var params='image_name='+vData; 
    $.post('localhost/PHP/addImage.php',params, 
    function(details){ 
    }, "json") 
    .error(function(jqXHR, textStatus, errorThrown) { 
    alert('err'); 
    }); 
} 

PHP 소스 코드 :

<?php 

include("config.php"); 

$clip_Name = $_REQUEST['image_name']; 
$artist_Name ="ash"; 

$sql = "INSERT INTO tblImageSave (fldImageSource) 
     VALUES('$base64Img')"; 

$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not enter data: ' . mysql_error()); 
} 

?> 
+0

어떤 데이터 유형이 fldImageSource 필드입니까? –

+0

http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php – Andreas

+0

코드를 보면 SQL Server가 아닌 MySQL을 사용하고 있습니다. 옳은? –

답변

0

700 문자를 Base64로 인코딩 특히, 이미지를 저장하기에 충분한 가능성이 없습니다. 이 칼럼에 큰 값을 삽입하면, MySQL은 그것을 자동으로 자르며 손상을 일으킬 것이다.

해결책 : 저장하려는 이미지의 최대 크기를 확인한 다음 적절하게 크기를 조정하십시오. 열을 변경하는 동안 이미지를 이진 값으로 저장하여 공간을 확보하는 것이 좋습니다. 그러나 거기에 도움이되는 원시 MySQL 함수가없는 것 같습니다.

다른 사람들이 이미 언급 한 내용을 반복하면 코드에 보안 구멍이 생길 수 있습니다. SQL 주입 공격을 막기위한 조치를 취해야합니다. @ Andreas '링크는 좋은 출발점입니다.

관련 문제