功能描述:

如下图,点击首页右上角图标出现弹框,点击选择“上传身份证”或“银行卡”,选择好证照后,点击上传按钮,将图片上传到后台进行OCR识别。

   

解决方案:

关键点 1.上传证照界面实现;2.图片url转base64处理。

具体实现步骤如下

(1)点击按钮,点击首页右上角图标出现弹框,点击选择“上传身份证”或“银行卡”,跳转上传证照页面

template:

<view @click="upload" class="iconfont icon-paizhao2"></view><!-- 选择证件弹窗 -->
<uni-popup ref="cardpopup" type="bottom"><view class="dialog" ><view @click="selectItem(index)" :class="active==index ? 'active':''" v-for="(item,index) in cardTypeList" :key="index">{{item.name}}</view></view>
</uni-popup>

data:

data(){return{cardTypeList:[{name:"上传身份证"},{name:"上传银行卡"}],}
}

methods:

methods:{upload(){this.$refs.cardpopup.open()},//选择上传身份证/银行卡selectItem(index){this.active=index;if(index==0){// 选择上传身份证uni.navigateTo({url:"/pages/idcard/idcard"})}else{// 选择上传银行卡uni.navigateTo({url:"/pages/bankcard/bankcard"})}},}

style

<style lang="scss">
.dialog{background-color: #fff;padding:40rpx;border-radius: 15px;margin:10rpx;view{height: 80rpx;line-height: 80rpx;text-align: center;margin-bottom: 6px;}.active{background-color: red;border-radius: 80rpx;color:#fff;}
}
</style>

(2)上传证照界面实现:安装Dcloud插件市场模板 graceUI [ 免费界面 ] - 身份证选择上传模板 

ps:GraceUI上,提供了丰富的组件、布局及界面库,如登录注册,个人中心、头像裁剪、商城套装等,可直接使用,极大的提高了开发效率。https://www.graceui.com/

(3)安装插件后,就是集成到自己的项目中,按项目的要求进行修改并使用。

(4)图片url转base64处理: 安装Dcloud插件市场插件 image-tools  图像转换工具,可用于图像和base64的转换

引入插件【pathToBase64】图像路径转base64

import { pathToBase64 } from '../../js_sdk/gsq-image-tools/image-tools/index.js'

使用插件,在图片上传后,将图片url转换为base64,并保存

methods: {// 选择身份证正面照片selectImg1 : function() {uni.chooseImage({count:1,success:(res)=>{this.idCard1 = res.tempFilePaths[0];//将图片url转换为base64pathToBase64(res.tempFilePaths[0]).then(base64=>{// console.log(base64)this.idCard1base64=base64}).catch(error=>{console.log(error)})         }})}
}

以下附上银行卡上传页面完整代码,上传身份证代码类似(建议将上传证照功能封装为可复用的组件)

<template><!-- 上传银行卡页面 --><view><view class="grace-idcard-main"><view class="grace-idcard-desc"></view><view class="grace-idcard-text">银行卡照片 ( 正面 )</view><view class="grace-idcard-items"><view class="grace-idcard-uper-btn" @tap="selectImg"><view class="img"><image src="../../static/images/camera.png" mode="widthFix" /></view><view class="text">拍摄或选择照片</view></view><view class="grace-idcard-preview"><image :src="bankCard"  @tap="previewImg" mode="widthFix"></image></view></view><view style="margin-top:38upx;"><button type="primary" @tap="uploadCards">上传</button></view></view></view>
</template>
<script>
import { pathToBase64  } from '../../js_sdk/gsq-image-tools/image-tools/index.js'
var _self;
export default {data() {return {bankCard : '../../static/images/bankcard.jpg',bankCardBase64:null};},onLoad:function(){_self = this;},methods: {// 选择银行卡正面照片selectImg : function() {uni.chooseImage({count:1,success:(res)=>{this.bankCard = res.tempFilePaths[0];//将图片url转换为base64pathToBase64(res.tempFilePaths[0]).then(base64=>{this.bankCardBase64=base64}).catch(error=>{console.log(error)})}})},// 预览银行卡正面照片previewImg: function(){uni.previewImage({urls:[_self.bankCard]});},// 上传银行卡uploadCards : function(){if(this.bankCard == '../../static/images/bankcard.jpg'){uni.showToast({title:"请选择银行卡照片", icon:"none"});return;}uni.showLoading({title:"上传中"});var param={type:2,images:[{side:"front",image:this.bankCardBase64,orderNum:1}]}// 向后台发送请求this.$myRequest({url:"card/ocr",method:"POST",data:param}).then(res=>{console.log("上传银行卡返回结果:",res)if(res.data.respCode=="00000"){uni.hideLoading();uni.showToast({title:res.data.respDesc,icon:"none"})uni.navigateTo({url:"/pages/cardInfo/cardInfo?data="+JSON.stringify(res.data.result)})  }else{uni.hideLoading();uni.showToast({title:res.data.respDesc,icon:"none"})}})}},
}
</script>
<style>
view{font-size:28upx;}
.grace-idcard-main{margin:20upx 30upx;}
.grace-idcard-desc{line-height:2em; background:#FFFFFF; padding:40upx; border-radius:10upx;}
.grace-idcard-text{line-height:2em; margin-top:30upx;}
.grace-idcard-items{background:#FFFFFF; padding:30upx 0; display:flex; margin:30upx 0; border-radius:10upx; align-items: flex-start;}
.grace-idcard-uper-btn{width:276upx; margin:0 60upx; background:#F1F1F1; padding-bottom:10upx; border-radius:10upx; text-align:center;}
.grace-idcard-uper-btn .img{width:100upx; height:100upx; margin:0 auto; margin-top:30upx;}
.grace-idcard-uper-btn .img image{width:100upx; height:100upx;}
.grace-idcard-uper-btn .text{width:100%; margin-top:10upx; text-align:center; line-height:2em;}
.grace-idcard-preview{width:50%; margin:0 30upx; }
.grace-idcard-preview image{width:100%; border-radius: 10rpx;}
</style>

uniapp---app端上传证件(身份证/银行卡)照片后转base64发送给后台功能实现相关推荐

  1. uniapp 移动端上传文件_基于 uniapp 实现动态路由和动态 Tabbar

    本文转载自 字节逆旅 公众号,感谢作者的好文分享✌️,点击阅读原文可以查看作者的掘金链接. uniapp用来开发app还是比较方便快捷的,官网教程[1]挺细致,几乎所有问题都能找到答案.网上也有不少入 ...

  2. uni-app 上传识别身份证信息

    最近在做一款小程序,需要用到上传识别身份证的功能,但是本人对uni-app 不是特别熟悉,求大神帮忙!!!  万分感谢!!!

  3. uniApp APP端调起微信支付失败errCode:-100的踩坑

    使用了在开放平台配置好包名和签名后调试,在有的机型上通过调试可以调起微信支付,但是打包成apk就调起失败,有一种可以成功的结果,反向推断出代码肯定没有问题.但是控制台报errCode:-100的错. ...

  4. uniapp App端使用高德地图

    uniapp App端使用高德地图 第一步: 先去高德官网申请keyhttps://console.amap.com/dev/key/app 关于SHA1生成方法如下:https://lbs.amap ...

  5. uniapp APP端视频轮播问题

    uniapp APP端视频轮播问题(黑屏,变形) 今天接到一个需求:需要在商品详情轮播展示视频,本以为很简单,但是发现好多坑,在app端出现黑屏,卡顿,变形,视频只展示半屏的情况. 完整代码放底下了 ...

  6. uniapp app端使用html2canvas和renderjs实现生成海报图

    uniapp app端使用html2canvas和renderjs实现生成海报图 原本app端是无法使用html2canvas的因为,app端不支持浏览器js. 不过我在uniapp里面看到了rend ...

  7. uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)

    前言 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能. 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseI ...

  8. java上传音频到服务器_Java 客户端向服务端上传mp3文件数据的实例代码

    客户端: package cn.itcast.uploadpicture.demo; import java.io.BufferedInputStream; import java.io.FileIn ...

  9. 手机优酷APP怎么上传视频

    手机优酷怎样视频上传,自身在日常生活拍到好玩的视频,我们可以上传优酷,那如何上传到优酷呢? 01. 在优酷首页,点一下提交按键. 手机优酷APP怎么上传视频 02. 随后登录自身的优酷视频帐户. 手机 ...

  10. 移动端开发——APP端上H5容器化建设

    1. 背景 当前移动端和前端的结合愈加紧密,尤其是在偏重活动运营的电商App中,受制于App版本审核,具备研发成本低.可灵活发布等特点的H5页面受到青睐,使其在APP端上承接了越来越多的业务.然而H5 ...

最新文章

  1. Sql Server实用操作-无数据库日志文件恢复数据库两种方法
  2. 重磅!三星宣布3nm成功流片!
  3. python中文版界面-python设置中文界面实例方法
  4. mysql 自增列 类型_MySQL--自增列学习
  5. 动手学CV-目标检测入门教程2:VOC数据集
  6. Java面向对象——基础2 封装、继承、多态
  7. 【转】vmware 安装 osx 无法登录 appstore 的解决办法 (伪造smbios设备信息)
  8. docker 安装azkaban_docker总结
  9. 潭州课堂25班:Ph201805201 爬虫基础 第六课 选择器 (课堂笔记)
  10. vue项目中vue-fullcalendar的使用(行程日历)
  11. Windows Server 2012 R2 安装IIS
  12. 有道词典android wear,iOS版有道词典6.0发布!最好的全能翻译工具
  13. Linux内核学习路线 学习linux内核的建议
  14. 查找100-200以内素数
  15. 单片机调试 — Event Recorder 的使用
  16. 乐山计算机学校军训,心有多大,舞台就有多大!乐山这名中职学生考上双一流211重点大学...
  17. 订阅新闻联播文字标题到邮箱
  18. 【云原生-DevOps】企业级DevOps平台搭建及技术选型-项目管理篇
  19. 笔记:在xt-form中插入el-table表格 和 在xt-form中插入el-button(基于iview-form)
  20. 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)

热门文章

  1. 机器人挠人脚心_美国惊现“挠脚狂魔” 潜入宿舍挠人脚心
  2. java jersey,java Jersey
  3. 打印机无法访问计算机,WIN7无法访问共享打印机及文件的解决办法
  4. 小学阶段计算机编程启蒙闲谈
  5. 注塑过程中30个常见的问题及对策
  6. Simulink 环境基础知识(二十一)--优化、估计和扫描模块参数值
  7. LSF10.1安装(server端)
  8. 4刀最多切割一个正方体为多少块
  9. word毕业论文页眉设置自动添加章节标题并左右对齐
  10. Echarts中国地图json文件,去除诸岛