拍照或从手机相册中选图接口

wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
}
});

预览图片接口

wx.previewImage({
current: '', // 当前显示图片的http链接
urls: [] // 需要预览的图片http链接列表
});

上传图片接口

wx.uploadImage({
localId: '', // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
}
});

备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id,参考文档 ../12/58bfcfabbd501c7cd77c19bd9cfa8354.html 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-open@qq.com,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。

以上是微信官方文档

以上接口的使用除开预览图片接口都需要完成config配置才可使用。

下面来看ios版微信无法回调success而直接走了fail问题所在,

wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
}
});

可以看到以上接口中count:1//默认9,经过测试,9包括9以下的数字都正常使用。而当填写的数量大于9时,在android上任然可以正常使用,只是使用的数量限制任然为9。也就是说单次最多可选择9张图片,我在项目中因为上传最多支持20张图,所以我填写的是count:20,这样就导致了我的项目在ios上可正常执行。而ios就报错,直接走fail回调。

解决方法:

这个count最大只能填写9(官方文档少了这个参数的具体描述)

实际项目操作:

页面展示代码

<div class="aImg">
  <span v-for="(img,index) in info.imgs" class="imgSpan">
    <img :src="img" alt="" class="imgSingle" >
    <img @click="delImg(index)" class="delImg" src="../assets/imgDel.png"/>
  </span>
</div>

点击选择图片:

upPhoto() {
var _this = this;
// this.info.show = false;
var imgCout = 5 - _this.info.imgs.length;
if(imgCout<=0){
MessageBox('提示', '最多只能传五张照片');
return false;
}
// _this.images.serverId = '';
// _this.info.imgs = [];
//上传图片
wx.chooseImage({
count: imgCout, // 默认9
sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
// _this.images.localId = res.localIds;返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
// _this.info.imgs.push(res.localIds);
            _this.info.quxiaos = true;
_this.info.x = true;
// _this.info.imgs = _this.info.imgs.concat(res.localIds);
_this.syncUpload(res.localIds);
 
}
});
},
syncUpload(localIds) {
let _this = this;
let localId = localIds.shift();
wx.uploadImage({
localId: localId.toString(), // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 0, // 默认为1,显示进度提示
success: function (res) {
//获取serverId
// alert('拿到serverid'+res.serverId);
            _this.info.imgs.push(localId);
            if(_this.info.imgs.length>0){
         _this.info.updown = false;
       }
       else{
         _this.info.updown = true;
       }
       
_this.images.serverId += ',' + res.serverId;
 
setTimeout(function () {
if(localIds.length > 0) {
_this.syncUpload(localIds);
}else {
_this.isWx(_this.images.serverId);
}
},0);
},
});
},
 
isWx(x) {
  let _this = this;
  _this.axios.get(_this.$store.state.weChatUrl + '/weixinFHW/consultation/imgInfo',{
    params: {
      serviceId: x
    }
  }).then(function ( response) {
    let imgUrl = response.data.positivePhoto;
    _this.info.quxiaos = false;
    _this.info.x = false;
    _this.positivePhoto = imgUrl;
})
},
删除的操作
delImg(index){
  let _this =this;
  _this.info.imgs.splice(index,1);
if(_this.info.imgs.length>0){
_this.info.updown = false;
}
else{
_this.info.updown = true;
}
_this.images.serverId = _this.images.serverId.split(',');
_this.images.serverId.splice(index+1,1);
_this.images.serverId = _this.images.serverId.join(',');
_this.isWx(_this.images.serverId);
},

微信图片上传 wx.Imagechoose的更多相关文章

  1. 微信图片上传,遇到一个神奇的jgp

    微信图片上传,获取图片base64遇到一个神奇的   jgp var imgFn = function (event) { event.preventDefault(); var id = '#'+$ ...

  2. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  3. android之使用GridView+仿微信图片上传功能

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下 ...

  4. jssdk微信图片上传功能

    /*wx.config({ debug: false, appId: data.appid, timestamp: data.timestamp, nonceStr: data.nonceStr, s ...

  5. MVC微信浏览器图片上传(img转Base64)

    因公司业务需要,需要做一个微信公众号里的图片上传功能,主要用到的技术就是 img转base64 上到服务器 话不多说, 贴代码 先看前端显示出来的东西 OK 图片不重要,看代码 <!--微信图片 ...

  6. 微信支付特约商户进件中base64格式图片上传

    微信图片上传接口地址:https://api.mch.weixin.qq.com/v3/merchant/media/upload 1.上传方法 1 using HttpHandlerDemo; 2 ...

  7. Android开发之使用GridView+仿微信图片上传功能(附源代码)

    前言:如果转载文章请声明转载自:https://i.cnblogs.com/EditPosts.aspx?postid=7419021  .另外针对有些网站转载本人的文章结果源码链接不对的问题,本人在 ...

  8. Android 使用GridView+仿微信图片上传功能(附源代码)

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下 ...

  9. 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题

    微信多图片上传必须挨个上传,也就是不能并行,得串行: 那么我们可以定义一个如下所示的上传函数: var serverIds = []; function uploadImages(localImage ...

随机推荐

  1. 关于pe结构

    每一种操作系统它最重要的格式就是它的可执行文件格式, 因为操作系统就是为了支持这些文件而生成的,内核里面有很多机制,也是配合这种文件格式设计的. 换句话说,这种文件格式也是适合操作系统设计的. 比如: ...

  2. js上传整个文件夹

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

  3. linux终端相关概念解释及描述

    基本概念: 1. tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被 ...

  4. 【csp模拟赛1】不服来战 (challenge.cpp)

    [题目描述] 最近小 Z 和他的朋友都迷上了一款手机游戏:不服来战. 游戏的设定十分简单,在游戏开始时,会给出一排共 N 个灯,有的灯是开着 的有的是关着的,每个灯都有一个分数.而玩家可以进行任意次操 ...

  5. Rapid Object Detection using a Boosted Cascade of Simple Features 部分翻译

    Rapid ObjectDetection using a Boosted Cascade of Simple Features 使用简单特征级联分类器的快速目标检测 注:部分翻译不准处以红色字体给出 ...

  6. Java中properties可以读取,但是里面的数据读取不到

    今天配置一个项目jdbc.properties这个文件里面的键值总是读取不到,刚开始以为是文件没有读取到,但是测试是读取到的,再排查键值是不是写错了, 后来发现键值是对的,这就很奇怪了 比较是没有任何 ...

  7. CSS简单选择器的学习笔记

    我们知道通过CSS定义页面样式的时候要用到各种各样的选择器,正确的使用选择器是我们能够正确使用CSS做页面样式的基础.下面是我学习选择器的一个简易笔记,举一些简单的例子. 为了方便展示,我选择在内部的 ...

  8. oracle面试题1

    1.题目要求 已知关系模式:S (SNO,SNAME)学生关系.SNO 为学号,SNAME 为姓名C (CNO,CNAME,CTEACHER)课程关系.CNO 为课程号,CNAME 为课程名,CTEA ...

  9. 【洛谷2057】 [SHOI2007]善意的投票(最小割)

    传送门 洛谷 Solution 比较巧妙啊! 考虑这个只有同意和不统一两种,所以直接令\(s\)表示选,\(t\)表示不选,然后在朋友直接建双向边就好了. 代码实现 #include<bits/ ...

  10. 安装wget 、 wget命令

    今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包.一般linux最小化安装时,wget不会默认被安装. 可以通 ...