У меня есть холст
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 );
Как сохранить данныеURL в моей базе данных?
Теперь вы пишете прямо в файловую систему сервера, всегда используя "image.png" в качестве своего имени (я предполагаю, что это тестовый сайт, а не производственный).
Если вы хотите сохранить содержимое изображения в БД, вам необходимо:
CREATE TABLE image_table( ID INTEGER AUTO_INCREMENT, IMAGE BLOB, PRIMARY KEY (ID)) ENGINE=InnoDB;
$_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
необходим для правильного 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 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...
должен быть заменен вашими фактическими значениями базы данных.
sha1()
содержимое файла и используйте его), а затем сохраните путь к базе данных.