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

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. Could not load file or assembly "\win32_x86\dotnet1\crdb_adoplus.dll' or one of its dependencies.

     Could not load file or assembly 'file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Repor ...

  2. windows内核情景分析之中断处理(毛德操)[转]

    中断处理 每个cpu有一张中断表,简称IDT. IDT的整体布局:[异常->空白->5系->硬](推荐采用7字口诀的方式重点记忆) 异常:前20个表项存放着各个异常的描述符(IDT表 ...

  3. Python回归分析五部曲(二)—多重线性回归

    基础铺垫 多重线性回归(Multiple Linear Regression) 研究一个因变量与多个自变量间线性关系的方法 在实际工作中,因变量的变化往往受几个重要因素的影响,此时就需要用2个或2个以 ...

  4. 【Android】【踩坑日记】RecyclerView获取子View的正确姿势

    开发过程中发现RecyclerView.getChildAt(position)为空的情况,但是明明这个position却没有越界. 解决办法:用recycler.getLayoutManager() ...

  5. Spring+shiro session与线程池的坑

    在java web编程中,经常使用shiro来管理session,也确实好用 shiro来获取session的方式 SecurityUtils.getSubject().getSession() 其中 ...

  6. 删除Linux系统多余的引导

    问题: 电脑中安装了多个Linux系统,需要删除不用的Linux系统的引导 解决方法: open terminal: su -     切换root用户 cd /boot/ ls ... grub  ...

  7. 数据库 | SQL 诊断优化套路包,套路用的对,速度升百倍

    本文出自头条号老王谈运维,转载请说明出处. 前言 在DBA的日常工作中,调整个别性能较差的SQL语句是一项富有挑战性的工作.面对慢SQL,一些DBA会心烦,会沮丧,会束手无措,也会沉着冷静.斗智斗勇! ...

  8. nginx优化后的主配置文件

    user web web; #nginx的程序账户和程序组 worker_processes auto; #worker进程数 auto设为默认 error_log /app/logs/nginx/w ...

  9. javascript 数据分组

    一.静态数据 [ {"id":"1001","name":"值1","value":"11 ...

  10. linux 下执行py问题提示cannot import name request

    最近因为工作需要,需要在linux上去执行python代码,但是在执行的时候提示cannot import name request,我以为是导入有问题,然后我就把代码放到与包一个目录下,执行py问题 ...