1. 前端可以实现二维码扫了操作的事情么
和后端是啥没有关系,前端做websocket长连接/flashsocket长连接/ajaxpoll模拟长连接即可
2. 手机扫描二维码传输文件到电脑如何实现
手机扫描二维码传输文件到电脑的实现原理为:
用户在PC端发出手机上传的请求,后端收到请求以后,开始拼装二维码信息,并将二维码信息制作成二维码图片以流输出,或将信息交给前端制作图片,二维码扫描后的信息,既上传文件页面的URL,扫码打开URL,进行判断。
从安全角度考虑,暴露在二维码中的信息,越少越好。可以只留下URL及业务路径、二维码的ID,其他信息让业务去处理。
扫码后会有二维码过期判断,就是二维码的扫描内容是有时间限制的,在约定时间之外则会失效。
而后程序会编写是否可上传判断。在很多业务中,不是所有的情况都可以上传附件,或者其他判断,例如当前用户在PC端是否为成功登录状态。
对于这些流程的判断,可能需要一个表,来存储由二维码ID关联的结果。也推荐使用一些缓存来存储二维码信息,毕竟二维码是具有有效期的,无需持久化。
(2)前端扫描二维码扩展阅读:
二维码本质本质是一个URL,用户可以通过任何或者我们指定的扫码工具打开上传二维码指向的链接。扫码后,将用户引入专门制作的移动端页面,通过二维码ID与后端进行交互。
请求页面成功时,应当返回一些信息,这些信息提示用户在给谁上传什么材料,以避免用户错误上传。
用户确认无误后,可以点击按钮,通过手机的文件浏览器上传文件。此时会使用PC端相同的逻辑预先判断后缀名等文件信息。提前拦截不合规的文件。
3. 二维码付款或者登陆用到哪些前端技术应用。用手机app扫描PC端二维码后,PC端自动监测到扫描结果
移动互联网的发展,二维码成为最重要的入口和工具
微信要做的是快速完成的二维码普及教育和用户的习惯养成
web端的二维码登陆,不在于有多便捷(其实未必方便),不在于将来在web端推登陆标准
重点在于,每个用户都学会并习惯于打开微信,点击右上角按钮,选择Scan QR Code!
4. html5移动端页面上调用手机摄像头扫描二维码并获取二维码信息代码
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
[html]view plain
<!DOCTYPEhtml>
<html><head>
<title>HTML5codeReader</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<styletype="text/css">
html,body{height:100%;width:100%;text-align:center;}
</style>
<scriptsrc="jquery-1.9.1.js"></script>
<script>
//这段代主要是获取摄像头的视频流并显示在Video签中
varcanvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded",function()
{
try{
canvas=document.getElementById("canvas");
context=canvas.getContext("2d");
video=document.getElementById("video");
varvideoObj={"video":true,audio:false},
flag=true,
MediaErr=function(error)
{
flag=false;
if(error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限','提示');
}elseif(error.NOT_SUPPORTED_ERROR){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
}elseif(error.MANDATORY_UNSATISFIED_ERROR){
alert('指定的媒体类型未接收到媒体流','提示');
}else{
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试','提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if(navigator.getUserMedia)
{
//qq浏览器不支持
if(navigator.userAgent.indexOf('MQQBrowser')>-1){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
returnfalse;
}
navigator.getUserMedia(videoObj,function(stream){
video.src=stream;
video.play();
},MediaErr);
}
elseif(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj,function(stream)
{
video.src=window.webkitURL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj,function(stream){
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj,function(stream){
$(document).scrollTop($(window).height());
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
returnfalse;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function(){startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5CANVAS");
}
},false);
//打印内容到页面
functionprintHtml(content){
$(window.document.body).append(content+"<br/>");
}
//开始拍照
functionstartPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video,0,0,320,320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
functionCatchCode(){
if(canvas!=null)
{
//以下开始编数据
varimgData=canvas.toDataURL();
//将图像转换为base64数据
varbase64Data=imgData;//.substr(22);//在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php",{"img":base64Data},function(result)
{
printHtml("解析结果:"+result.data);
if(result.status=="success"&&result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
</script>
<body>
<divid="support"></div>
<divid="contentHolder">
<videoid="video"width="320"height="320"autoplay>
</video>
<canvasstyle="display:none;background-color:#F00;"id="canvas"width="320"height="320">
</canvas><br/>
<buttonid="snap"style="display:none;height:50px;width:120px;">开始扫描</button>
</div>
</body></html>
5. 通过什么方式可以扫二维码体现一个附件
摘要 授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。
6. html5移动端调用手机摄像头扫描二维码并获取二维码信息代码怎么写
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
[html]view plain
<!DOCTYPEhtml>
<html><head>
<title>HTML5codeReader</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<styletype="text/css">
html,body{height:100%;width:100%;text-align:center;}
</style>
<scriptsrc="jquery-1.9.1.js"></script>
<script>
//这段代主要是获取摄像头的视频流并显示在Video签中
varcanvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded",function()
{
try{
canvas=document.getElementById("canvas");
context=canvas.getContext("2d");
video=document.getElementById("video");
varvideoObj={"video":true,audio:false},
flag=true,
MediaErr=function(error)
{
flag=false;
if(error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限','提示');
}elseif(error.NOT_SUPPORTED_ERROR){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
}elseif(error.MANDATORY_UNSATISFIED_ERROR){
alert('指定的媒体类型未接收到媒体流','提示');
}else{
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试','提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if(navigator.getUserMedia)
{
//qq浏览器不支持
if(navigator.userAgent.indexOf('MQQBrowser')>-1){
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器','提示');
returnfalse;
}
navigator.getUserMedia(videoObj,function(stream){
video.src=stream;
video.play();
},MediaErr);
}
elseif(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj,function(stream)
{
video.src=window.webkitURL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj,function(stream){
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}
elseif(navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj,function(stream){
$(document).scrollTop($(window).height());
video.src=window.URL.createObjectURL(stream);
video.play();
},MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
returnfalse;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function(){startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5CANVAS");
}
},false);
//打印内容到页面
functionprintHtml(content){
$(window.document.body).append(content+"<br/>");
}
//开始拍照
functionstartPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video,0,0,320,320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
functionCatchCode(){
if(canvas!=null)
{
//以下开始编数据
varimgData=canvas.toDataURL();
//将图像转换为base64数据
varbase64Data=imgData;//.substr(22);//在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php",{"img":base64Data},function(result)
{
printHtml("解析结果:"+result.data);
if(result.status=="success"&&result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
</script>
<body>
<divid="support"></div>
<divid="contentHolder">
<videoid="video"width="320"height="320"autoplay>
</video>
<canvasstyle="display:none;background-color:#F00;"id="canvas"width="320"height="320">
</canvas><br/>
<buttonid="snap"style="display:none;height:50px;width:120px;">开始扫描</button>
</div>
</body></html>
7. web扫码登录怎么实现,思路是什么
1.前端调用后台生成二维码的API,获取到二维码图片和所包含的信息(通常是一个唯一ID)
2.前端检测(通过轮询或者websock,自己选择)是否有手机扫码,通过调用后台接口API,参数为上面的唯一ID
3.手机扫描二维码登陆,手机端可以获取到二维码里的信息ID,带上当前登陆用户ID和二维码里的ID调用后台接口。
后台存储这个二维码的数据,加上登录用户信息,当前台调用API时,给返回登录成功。
4.前端获取到登录成功,进行跳转
8. 用HTML5 可以实现二维码扫描识别的功能吗
可以。
实现基本步骤:
操作摄像头,获取图片。
技术要点:MediaStream、GetUserMedia、File api。
利用canvas使用相关算法分析图片识别图片得出结果。
技术要点:getImageData
* 涉及到的技术点浏览器们(包括移动端)支持各异,现阶段要开发并投产还不太现实
* 识别算法是一个难点,不过谢谢github,谢谢开源社区,@Shou Jiesong 的答案中有phonegap的插件地址,支持各种码。
9. php代码如何实现扫描二维码获取扫描者的信息
1、首先创建一个名称为erweima的php文件。
注意事项:
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
10. 前端页面怎么判断用户已扫描二维码
前端没法判断用户是否扫描,只能后端处理。