如何将Kineticjs画布上的图像保存到数据库?
我有一个帆布如何将Kineticjs画布上的图像保存到数据库?
function initStage(images) { var stage = new Kinetic.Stage({
container: "container",
width: 550,
height: 550
});
和保存按钮
$('#save').click(function() { stage.toDataURL(function(dataUrl) {
$.ajax("ajax.php", { data: dataUrl },
function(data) {
alert("Your Design Was Saved To The Server");
}); }); });
和ajax.php
$png =$_POST['data']; $filteredData=substr($png, strpos($png, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen('image.png', 'wb');
fwrite($fp, $unencodedData);
fclose($fp);
如何保存dataURL到我的数据库?
回答:
您现在正在直接写入服务器的文件系统,始终使用'image.png'作为其名称(我假设这是一个测试网站,而不是生产网站)。
如果你婉图像内容保存到数据库,你必须:
- 创建一个数据库,利用数据库引擎,你要使用
- 创建一个表并添加BLOB类型用于存储图像的内容。您可能还想获取自动递增的ID字段,以便稍后可以使用其ID值检索图像。实际的表是这样的:
CREATE TABLE image_table(ID INTEGER AUTO_INCREMENT, IMAGE BLOB, PRIMARY KEY (ID)) ENGINE=InnoDB;
- 连接到数据库使用您要使用
- 执行INSERT SQL语句,传递
$_POST['data']
内容作为参数的凭据。
$connection = @mysqli_connect('database_hostname','database_username', 'database_password','database_databasename');
mysqli_query($connection ,"INSERT INTO image_table VALUES(NULL, '".
mysqli_real_escape_string($connection , $_POST['data']) ."')");
的调用mysqli_real_escape_string
要正确逃生用JS脚本发送的数据,以便SQL查询中也不会造成麻烦。
如果你想从数据库中检索图像,你必须使用一个SELECT
类型的查询,如SELECT ID, IMAGE FROM image_table WHERE ID='".intval(ID)."';"
一旦你从数据库中的图像,你可以使用这样的送它的浏览器:
//get the data from the database somehow (mysql query et al.) //let's assume data retrieved from the DB is in $data
header('Content-Type: image/png');//alter for png/gif/etc.
echo $data['IMAGE'];
在HTML页面中,你会使用这样
<img src="/myimagescript.php?id=ID">
回答:
你不说你正在使用哪个数据库。也许MySQL因为你使用PHP?
这里有一个例子开始你的dataUrl字符串保存到MySQL数据库:
$conn = new PDO('mysql:host=myHost;dbname=myDatabase', "myUser", "myPassword"); // INSERT with named parameters
$stmt = $conn->prepare("INSERT INTO myTable(myImageColumnName)VALUES(:theImage)");
$stmt->bindValue(":theImage",$unencodedData);
$stmt->execute();
$affected_rows = $stmt->rowCount();
echo $affected_rows;
当然,所有的例子my...
必须由实际的数据库值来代替。
以上是 如何将Kineticjs画布上的图像保存到数据库? 的全部内容, 来源链接: utcz.com/qa/257188.html