经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
vue+axios实现图片上传识别人脸的示例代码
来源:jb51  时间:2021/11/9 15:50:42  对本文有异议

本文主要介绍了vue+axios实现图片上传识别人脸的示例代码,分享给大家,具体如下:

先看最终效果:

这里采用的是vant的文件上传组件,通过上传图片后端识别图片里的人脸,返回到前端,获取该人脸匹配的工号或学号。以便后续其他系统使用,比如上传成功了一个人脸照片识别成功,可以通过人脸开启会议室的门禁。目前只是做了一个人脸上传的效果。

Axios请求

使用axios请求数据,method:post时,data默认的传参数据类型是字符串的类型,如需要传递json格式,需要引入qs.js,看后端接受的类型而定。

Qs处理数据分析

首先qs是一个npm仓库所管理的包,可通过npm install qs命令进行安装.
地址: www.npmjs.com/package/qs

qs.parse()、qs.stringify()

  • qs.parse()将URL解析成对象的形式
  • qs.stringify()将对象 序列化成URL的形式,以&进行拼接

以下,是在实际项目中的使用方式:

  1. var data = {
  2. code:GetRequest().code,
  3. file:file.content
  4. }
  5. axios({
  6. method:'post',
  7. url:'/app/face/upload',
  8. data:qs.stringify(data)
  9. })

Vant上传文件格式

上传文件,这里需要注意点就是传递到后端需要的格式,可以是文件流,也可以是base64,尽管两种类型,vant都已经帮我们处理过了,文件流,我们也想可以直接使用formData直接传给后端,base64有些后端他需要我们自己处理过滤掉这里我们需要使用正则fileList[0].content.replace(/^data:image\/\w+;base64,/, '') 然后再传递到后端

完整代码

  1. <div id="app">
  2. <div style="display:flex;
  3. justify-content: center;
  4. align-items: center;
  5. width: 100vw;
  6. height: 100vh;">
  7. <div>
  8. <van-uploader v-model="fileList" upload-text='人脸正面照' :max-count="1" :after-read="afterRead" ></van-uploader>
  9. <p style="text-align:center;font-size:15px;" v-if="data">学号/工号:{{data}}</p>
  10. </div>
  11. </div>
  12. </div>
  13. <script>
  14. var app = new Vue({
  15. el: '#app',
  16. data: {
  17. fileList: [],
  18. data:'',
  19. },
  20. methods:{
  21. afterRead(file) {
  22. //上传中,添加上传中的状态提示 status 为uploading
  23. file.status = 'uploading';
  24. file.message = '上传中...';
  25. var data = {
  26. code:this.$route.query.code,
  27. file:file.content
  28. }
  29. axios({
  30. method:'post',
  31. url:'app/face/upload',
  32. data:{
  33. code:GetRequest().code,
  34. file:file.content
  35. }
  36. }).then((res)=>{
  37. //请求返回,并且已经获取到成功的状态,设置上传成功的提示 status 为done
  38. if(res.data.code == 0){
  39. file.status = 'done';
  40. file.message = '';
  41. this.data = res.data.data.userNo
  42. this.$notify({ type: 'success', message: '上传成功' });
  43. //请求返回,接受到上传失败的提示 status为failed
  44. }else{
  45. file.status = 'failed';
  46. file.message = '上传失败';
  47. this.$notify({ type: 'warning', message: res.data.msg });
  48. this.data = ''
  49. }
  50. }).catch(()=>{
  51. file.status = 'failed';
  52. file.message = '上传失败';
  53. this.data = ''
  54. })
  55. },
  56. }
  57. })
  58. </script>

到此这篇关于vue+axios实现图片上传识别人脸的示例代码的文章就介绍到这了,更多相关vue axios图片上传识别人脸内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号