微信端调取相册和摄像头功能,实现图片上传,并上传到服务器


Posted in Javascript onMay 16, 2019

最近在做微信公众号网页开发,遇到两个需要用到微信的JSSDK,上传图片和自动定位,微信开发者文档有详细的步奏内容,链接点击进入微信开发者文档 ,也可以看看我这篇文章,看我是如何实现的。

首先第一步,需要在页面引入微信的JS文件(http和https都行)

<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

第二步,获取签名

后台会给前端一个接口,前端通过这个接口发送请求获取必要的签名信息,并进行配置

sendAjax.weixin.getSdkSign({'传入参数'},function(msg){
    let sdkSign = msg.sdkSgin; // 后台返回的值
   wx.config({
    debug: false, // 因为在手机上测试没法打印,当debug为true时,所有的返回值都会在手机上alert出来
    appId: sdkSign.appId, // 必填,公众号唯一标识
    timestamp: sdkSign.timestamp, // 必填,生成签名的时间戳
    nonceStr: sdkSign.nonceStr, // 必填,生成签名的随机串
    signature: sdkSign.signature,// 必填,签名
    jsApiList: ['chooseImage','uploadImage'] // 必填,需要使用的JS接口列表,需要用到什么接口就去开发者文档查看相应的字段名
   });
});

其中,sendAjax.weixin.getSdkSign 是我个人自己封装的ajax请求,不用多在意。

第三步,就是上传图片了,相信一般都是一个点击事件来调取微信的相册和摄像头功能。在事件方法中按以下方式写

wx.chooseImage({
    count: 1, // 最多可以选择的图片张数,默认9
    sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
    sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
    success: function (res) {
     let localIds = res.localIds; // 返回选定照片的本地ID列表(手机上操作就是手机端的ID列表,是一个数组),localId可以作为img标签的src属性显示图片
     wx.uploadImage({
      localId: localIds[0], // 需要上传的图片的本地ID,由chooseImage接口获得
      isShowProgressTips: 1, // 默认为1,显示进度提示
      success: function (result) {
       let serverId = result.serverId; // 返回图片的服务器端ID
         // 可以将serverId传给后台,用于存放在自己服务器上
      }
     });
    },
    fail: function() {},
    complete: function() {}
});

需要注意的是,chooseImage是调取微信相册和摄像头功能。其中count是可选择的,localIds是一个数组,当只上传一张图片时,localIds[0]可直接用来作为需要上传图片位置的路径,不用再拼接其他东西。

uploadImage是将本地图片上传到服务器,至于怎么上传,这应该是后端的事了,你只需要保证localIds这个数组正确即可。

至此,微信端调取相册和摄像头功能,实现图片上传,并上传到服务器功能基本就实现了,有疑问或者不对的地方欢迎留言。

以上所述是小编给大家介绍的微信端调取相册和摄像头功能图片上传服务器详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript中的History历史对象
Jan 16 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
微信小程序商城项目之购物数量加减(3)
Apr 17 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
js评分组件使用详解
Jun 06 Javascript
解决JQuery全选/反选第二次失效的问题
Oct 11 jQuery
JS实现多物体运动的方法详解
Jan 23 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
Nov 12 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
vue+springboot+element+vue-resource实现文件上传教程
Oct 21 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 #Javascript
怎样在vue项目下添加ESLint的方法
May 16 #Javascript
eslint 的三大通用规则详解
May 16 #Javascript
webpack项目使用eslint建立代码规范实现
May 16 #Javascript
Vue项目中使用jquery的简单方法
May 16 #jQuery
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 #Javascript
详解vue2.0模拟后台json数据
May 16 #Javascript
You might like
php ci框架验证码实例分析
2013/06/26 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
JavaScript日历实现代码
2010/09/12 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python 实现return返回多个值
2019/11/19 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
七一党建活动方案
2014/01/28 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
vue 自定义组件添加原生事件
2022/04/21 Vue.js