我正在开发一个node.js和HTML5应用程序,用户可以在画布上绘制内容,其他用户可以查看它。正在绘图的用户被提供了一个按钮,用于将他们绘制的图像保存到数据库(MySQL)中。我将canvas的dataURL保存到数据库中,当我使用此代码测试时,插入查询工作正常:
var http = require('http');
var mysql = require('mysql');
var express = require('express');
var app = express();
var server = http.createServer(app);
server.listen(3000,function(){ console.log('server listening')});
var con = mysql.createConnection({
host:'localhost',
user:'root',
password:'mypass',
database:'my_db'
});
con.connect();
data = ['Anna','Cat',1,'data:image/png;base64,....the rest dataURL...'];
con.query('insert into sketches values("'+data[0]+'","'+data[1]+'",'+data[2]+',"'+data[3]+'")',function(err,result){
if(err){
console.log('error!!!');
throw err;
}
else console.log('insertion succesful');
});
但是当我在真实应用中插入此代码时,表格中没有插入。
在HTML5页面上,我写道:
$("#savebutton").click(function() {
var packet = db.sendimage(name,image_name,image_no);
alert(packet);
socket.emit('saveimage',packet);
});
这是sendimage的定义
// Send button function
this.sendimage=function(name,image_name,no) {
// get base64 encoded png data url from Canvas
var img_dataurl = canvas.toDataURL("image/png");
console.log("in send image "+img_dataurl);
var data = [name,image_name,no,img_dataurl];
return data;
}
这是服务器端脚本
socket.on('saveimage', function(data){
console.log("in save image");
con.query('USE my_db');
con.query('insert into sketches values ("'+data[0]+'","'+data[1]+'",'+data[2]+',"'+data[3]+'")',function(err,result){
console.log("in insert query");
if (err){
console.log('ERROR: ' + err);
throw err;
}
console.info("succesfully inserted");
});
});
任何人都可以帮忙,我做错了什么?