[英]How to get canvas edited image data to HTML input field?
<canvas id="c" name="c"></canvas>
<input style="display:none;" type="file" name="nextImage" id="nextImage"/>
Above code is canvas where edited image is placed, below is input field where i want the canvas image value.上面的代码是放置编辑图像的画布,下面是我想要画布图像值的输入字段。
jQuery('document').ready(function(){
jQuery('#svconvac').click(function(e){
e.preventDefault();
console.log("Click");
var canvas = document.getElementById('c');
var dataURL = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
//jQuery("#nextImage").val(dataURL);
console.log(dataURL);
//return false;
jQuery.ajax({
type: "POST",
url: "editMap.php",
data: {
imgBase64: dataURL
},
success: function(data) {
data['dataURL'] = document.getElementById("nextImage").value;
console.log('saved');
}
});
});
});
So far what i tried using this ajax function but no chances to be successful, am i calling wrong data in ajax?到目前为止,我尝试使用这个 ajax 函数但没有成功的机会,我在 ajax 中调用了错误的数据吗? where it says:它说:
editedMap = $data['dataURL'];
My Function for saving to database Please also look at this:我的用于保存到数据库的功能请同时查看:
public function mapUpdate($data, $file, $id)
{
$floor_name =$this->fm->validation($data['floor_name']);
$floor_name =mysqli_real_escape_string($this->db->link, $data['floor_name']);
$permited = array('jpg', 'jpeg', 'png', 'gif');
$file_name = $file['nextImage']['name'];
$file_size = $file['nextImage']['size'];
$file_temp = $file['nextImage']['tmp_name'];
$div = explode('.', $file_name);
$file_ext = strtolower(end($div));
$unique_image = substr(md5(time()), 0, 10).'.'.$file_ext;
$uploaded_image = "uploads/maps/".$unique_image;
if($floor_name == '')
{
$msg = "<span class='error'> Fields must not be empty !! </span>";
return $msg;
}
else{
if (!empty($file_name))
{
if ($file_size >1048567)
{
echo "<span class='error'>Image Size should be less then 1MB! </span>";
}
elseif (in_array($file_ext, $permited) === false)
{
echo "<span class='error'>You can upload only:-".implode(', ', $permited)."</span>";
}
else
{
$delImageQuery = "SELECT * FROM tbl_map WHERE mapId='$id'";
$getData = $this->db->select($delImageQuery);
if ($getData)
{
while ($delImg =$getData->fetch_assoc())
{
$delLink = $delImg['mapImg'];
unlink($delLink);
}
}
move_uploaded_file($file_temp, $uploaded_image);
$query= "UPDATE tbl_map SET floorName = '$floor_name', mapImg = '$uploaded_image' WHERE mapId ='$id' ";
$update_row =$this->db->update($query);
if($update_row)
{
$msg ="<span class='success'> Map Update successfully. </span>";
return $msg;
}
else
{
echo "<span class='error'>Map Not Update !</span>";
}
}
}
else
{
$query= "UPDATE tbl_map SET floorName = '$floor_name' WHERE mapId ='$id' ";
$update_row =$this->db->update($query);
if($update_row)
{
$msg ="<span class='success'> Map Update successfully. </span>";
return $msg;
}
else
{
echo "<span class='error'>Map Not Update !</span>";
}
}
}
}// Update function ends here
Hoping for some help.希望得到一些帮助。
Input type file does not accept base64 data as value, you can use input type hidden like below.输入类型文件不接受 base64 数据作为值,您可以使用隐藏的输入类型,如下所示。
HTML HTML
<canvas id="c" name="c"></canvas>
<input type="hidden" name="nextImage" id="nextImage">
JS JS
jQuery('document').ready(function(){
jQuery('#svconvac').click(function(e){
e.preventDefault();
console.log("Click");
var canvas = document.getElementById('c');
var dataURL = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
//jQuery("#nextImage").val(dataURL);
console.log(dataURL);
//return false;
jQuery.ajax({
type: "POST",
url: "editMap.php",
data: { // [1]
imgBase64: dataURL
},
success: function(data) { // [2]
// data at [1] and [2] are not same, data [2] is variable that hold values of response from "editMap.php" API, you may also change this name to any name like response.
data['dataURL'] = document.getElementById("nextImage").value;
console.log('saved');
}
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.