2015-12-16 8 views
6

Próbujesz wstawić obraz wygenerowany z kamery użytkownika do bazy danych mysql za pomocą php, ale to nie działa. Używam webcam.js i wszystko działa dobrze. Kiedy użytkownik robi migawkę, obraz jest przechowywany na serwerze, jednak wkładka mysql nie wykonuje zadania wstawiania. Każdy pomysł, dlaczego nie działa?Przesyłanie obrazu wygenerowanego z kamery internetowej do bazy danych mysql z php nie działa

Zarówno kod jest pokazanie poniżej:

cam.php:

session_start(); 

include_once 'dbconnect.php';//connection to db 
if(!isset($_SESSION['user'])){//ensures that it the true user 
    header("Location: index.php"); 
} 

//display current time 
//$arrival_time= date('Y-m-d H-i-s'); 
//echo "$arrival_time"; 

if (isset($_POST['send'])) { 
    $getname= mysql_real_escape_string($_POST['last_name']); 
    $idvalue= $_SESSION['myvalue']; 

    $update=mysql_query("UPDATE `employees`.`webcam_clockin` 
     SET `last_name`='$getname' WHERE image_id='$idvalue'"); 

    if($update) 
    { 
     //run a check to verify last_name 
     $sql=mysql_query("SELECT users.*, employees.* FROM users 
      NATURAL JOIN employees 
      WHERE employees.last_name='$getname'"); 
     $result=mysql_fetch_array($sql); 

     if($result){ 
      $_SESSION['user'] = $result['user_id']; 
      header("Location: home.php"); 
     } 
     else 
     { 
      ?> 
       <script> 
        alert('Wrong Last Nane'); 
       </script> 
      <?php 
     } 
    } 
    else 
    { 
     echo "Error Not done"; 
    } 
} 
    </style> 

    </head> 
    <body> 
     <div class="container"> 
      <div align="center"> 
       <script> 
        webcam.set_api_url('camsave.php'); 
        webcam.set_quality(100); // JPEG quality (1 - 100) 
        webcam.set_shutter_sound(true); // play shutter click sound 
       </script> 

       <script> 
        document.write(webcam.get_html(640, 480)); 

        webcam.set_hook('onComplete', 'my_callback'); 

        function my_callback(msg) 
        {            
         document.getElementById('upload').innerHTML = msg; 
        } 

        function do_upload(){     
         webcam.snap();      
        } 

        function my_callback(msg) {      
         // extract URL out of PHP output 
         if (msg.match(/(https\:\/\/\S+)/)) { 
          var image_url = RegExp.$1; 
          // show JPEG image in page 
          document.getElementById('upload_results').innerHTML = 
           '<h1>Upload Successful!</h1>' + 
           '<h3>JPEG URL: ' + image_url + '</h3>';       
         } 
         else alert("PHP Error: " + msg); 
        } 

       </script> 
       </div> 
      <div> 
     <form class="form-signin" id="myForm"><br> 
     <h3 class="form-signin-heading">Enter Your Name. Take a Nice Picture and Submit</h3>    
      <input type=button class="btn btn-lg btn-primary btn-block" id="snap" 
      onclick="do_upload()" value="Snap">    
     </form> 
     <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" class="form-signin" ><br> 
      <label for="last_name" class="sr-only">Enter Last Name</label> 
      <input type="text" name="last_name" id="last_name" 
      class="form-control" placeholder="Last Name" required autofocus> 
      <input type="submit" class="btn btn-lg btn-primary btn-block" name="send" id="send">   
     </form> 
      </div> 
      </td><td width=50>&nbsp;</td><td valign=top> 
      <div id="upload"></div> 
      </td></tr></table> 
     </div> 

    </body> 
</html> 

camsave.php:

session_start(); 
include_once 'dbconnect.php'; 

if(!isset($_SESSION['user'])) 
{ 
    header("Location: index.php"); 
} 

//get some data about this user 
$res2=mysql_query("SELECT users.*, employees.* FROM users 
    NATURAL JOIN employees WHERE user_id=".$_SESSION['user']); 
$userRow=mysql_fetch_array($res2); 

if ($userRow) { 
    echo "correct!!"; 
} 
//Define storage location of original images 
$folder = "images/"; 
$filename = date('Y-m-d-H-i-s') . '.jpg'; 
$original = $folder.$filename; 

//Get JPEG snapshot from webcam 
$input = file_get_contents('php://input'); 

//Blank images are discarded 
if(md5($input) == '7d4df9cc423720b7f1f3d672b89362be'){ 
    exit(); 
} 

//Retreive the snap and save to original dest. 
$file= file_put_contents($original, $input); 
if(!$file){ 
    print "ERROR: Failed to write data to $filename, check permissions\n"; 
    exit(); 
} 
else 
{ 
    //Get the size of the image 
    $info = getimagesize($original); 
    list($width,$height) = $info; 
    if($info['mime'] != "image/jpeg"){//ensure we get right file extension 
     unlink($original); 
     exit(); 
    } 
    //Move images to the Original folder 
    rename($original, "images/original/".$filename); 


    $emp_no = $userRow['emp_no'];//employee number 
    $user_id = $_SESSION['user_id'];//user ID 
    $image_id = NULL; 
    $original = "images/original/".$filename;//our image 
    $last_name =$_SESSION['last_name']; 
    $path = "images/thumbnail/".$filename; 

    $sql=mysql_query("INSERT INTO `webcam_clockin` 
     (`image_id`, `user_id`, `images`, `emp_no`, `last_name`) 
     VALUES ('$image_id', '$user_id','$path','$emp_no', '$last_name')"); 
     move_uploaded_file($original, $path); 

    if(move_uploaded_file($filename, $original)){ 

     echo "The file ". $original.$filename. " has been uploaded, and your information has been added to the directory"; 
     echo "Thank You "; echo $userRow['username']; echo".\n"; 
    } 
    else{ 
      echo "Sorry, there was a problem uploading your file."; 
      echo "Error inserting entry data: ".mysql_error(); 
    ?> 
     <script> 
      alert('Error Inserting your details. Please, see your department manager'); 
     </script> 
     <?php 
    } 
    $value=mysql_insert_id(); 
    $_SESSION["myvalue"]=$value; 
} 

$url = 'https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename; 
    print "$url\n"; 

I wreszcie rozwiązał problem zapisywania obrazu do bazy danych. Problemem był nieprawidłowy typ danych w phpmyadminie, który powinien być longblob.

+0

Proszę, może ktoś pomóc to ostatnia twarz mojego projektu i jego pilne. Dzięki –

+0

Pierwszą miarą do rozwiązania problemu jest złapanie błędów mysql i wydrukowanie ich. – Ctx

+0

Mam włączone debugowanie php i nie wydrukowano żadnego błędu, i to samo dla mysql bez błędu wydrukowano –

Odpowiedz

0

Jestem za późno, aby odpowiedzieć, ale może być to pomoże innym napisałem tutorial na ten temat. Możesz check it here. W tym samouczku użyłem HTML5, Jquery, PHP, ten samouczek użyje klasy PHP i zapisze obraz na dwa sposoby.

  1. przechowywanie lokalne
  2. Base64

W obu przypadkach będzie to zapisać obraz do bazy

Powiązane problemy