我正在开发一个数据库,我们需要拥有用户表单数据和从网络摄像头捕获的图像,然后将用户数据发送到数据库,并在文件服务器上添加指向照片的链接。我使用此处找到的代码http://davidwalsh.name/demo/camera.php(添加了dataurl和base64编码)将图像捕获到画布。在发布之前,我已经搜索过去2周(未知单独的代码更改和转换),并且已经阅读了一些人,说明有关Canvas.toDataURL()的类似问题,但它只是不起作用我
我收到一个上传为png的文件,但该文件的大小为0.我没有其他编码形式的经验(ruby / api / ajax / python),所以我无法使用这些编码。如果那些是强制性的,那么我将不得不找到另一种方法(可能通过Flash的动作脚本)来使这项工作或放弃这些,直到学习这些脚本。
如果使用PHP和mySQL甚至可以提供任何信息都会有所帮助,所以我不想创建一些不可能的东西。 platofrm / delivery system将是我们内联网上的内部服务器。目前正在运行谷歌浏览器的Windows计算机上的网络主机服务器上进行测试(也在firefox,opera和IE上测试过)提前感谢您花时间阅读。
在我的form.php中
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
var C = canvas.getContext('2d');
}
$('#canvas').submit()(function(event) {
// feel free to choose your event ;)
// just for example
// var OFFSET = $(this).offset();
// var x = event.pageX - OFFSET.left;
// var y = event.pageY - OFFSET.top;
// standard data to url
var imgdata = canvas.toDataURL('image/png');
// modify the dataUrl so the browser starts downloading it instead of just showing it
var newdata = imgdata.replace(/^data:image\/png/,'data:application/octet- stream');
// give the link the values it needs
$('a.linkwithnewattr').attr('download','your_pic_name.png').attr('href',newdata);
});
在我的addcontent.php
中<?php
include("connectionInfo.php");
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$name = $_POST['name'];
$phone = $_POST['phone'];
$duedate = $_POST['duedate'];
$employee = $_POST['employee'];
$address = $_POST['address'];
$email = $_POST['email'];
$estimate = $_POST['estimate'];
$dataURL = $_POST["canvas"];
//input file into images folder
$image = str_replace('data:image/png;base64,', '', $dataURL);
$image = str_replace(' ', '+', $dataURL);
$image = base64_decode($dataURL);
$filename = "$duedate$name.png";
file_put_contents('images/' . $filename, $dataURL);
// create path for image upload
$path = "images/" . $filename;
move_uploaded_file($_FILES["file"]["tmp_name"],$path);
//show file location
echo "Stored in: ". $path;
//store file path in database
if(mysql_query("INSERT INTO JobBags (image) VALUES ('$path')")){
echo "Successfull!!";} else {
echo '---fail-sadface---';}
// put customer info into job bag database
$sql = "INSERT INTO JobBags (name, phone, duedate, employee, address, email, estimate, image)
VALUES ('$name', '$phone', '$duedate', '$employee', '$address', '$email', '$estimate', '$dataURL')";
//check if jobbag created correctly
if ($conn->query($sql) === TRUE) {
echo "New record created successfully.";
} else {
echo "Error: " . $mysqli . "<br>" . $conn->error;
}
// close connection to database
$conn->close();
?>