2012-01-02 6 views
1

캔버스를 MySQL 데이터베이스 (BLOB 셀)에 저장하려고합니다.MySQL 데이터베이스에 캔버스 저장

String insertStatement = "INSERT INTO Canvas(userId, title, pic) VALUES (?, ?, ?);"; 
    prepStmt = connection.prepareStatement(insertStatement); 
    prepStmt.setInt(1, id); 
    prepStmt.setString(2, canvas.getTitle()); 
    prepStmt.setBytes(3, canvas.getPic()); 
    prepStmt.executeUpdate(); 

을 항상 DB에 빈 이미지를 얻을 실행 한 후 : 나는 그런 내 이미지

BASE64Decoder decoder = new BASE64Decoder(); 

byte[] pic = decoder.decodeBuffer(request.getParameter("pic")); 
CanvasController.AddCanvas(sessionId, new CanvasModel(0, 0, request.getParameter("title"), pic)); 

를 저장하기 위해 자바를 사용하여 데이터베이스에 삽입

function saveCanvas(){ 
    var canvas = document.getElementById("canvas"); 

    var dataURL = canvas.toDataURL("image/png"); 
    dataURL = dataURL.replace(/^data:image\/(png|jpeg);base64,/, "");  
    var req = $.ajax({ 
     url: "Canvases", 
     type: "Post", 
     data: "operation=0&sessionId=" + readCookie('sessionId') + "&title=" + document.getElementById('imageNameTextbox').value + "&pic=" + dataURL, 
     success: function(){ 
     } 
    }); 
} 

에서 자바 스크립트

의 기능을 가지고있다. 나는 이미지/JPEG로 PNG로/이미지를 변경하고, 예를 들면 그릴 때 :

http://imageshack.us/photo/my-images/714/pobranec.jpg

를 내가 얻을 :

http://imageshack.us/photo/my-images/15/pobrane2q.jpg

당신은 내가 잘못 무엇을 말할 수 있는가?

답변

1

데이터 문자열이 제대로 인코딩되지 않아 데이터가 서버에서 수신되고 게시물 본문에서 추출 될 때 손상 될 수 있습니다.

data: { 
     operation: 0, 
     sessionId: readCookie('sessionId'), 
     title : document.getElementById('imageNameTextbox').value, 
     pic: dataURL 
    } 

및 JQuery와 당신을 위해 인코딩을 처리 할 수 ​​있습니다 : 당신의 data이로 변경합니다.

+0

감사합니다. 작동합니다. – vesper

관련 문제