js-jssdk微信H5选择多张图片预览并上传(兼容ios,安卓,已测试)
值得注意的是:
1.在微信H5中选择图片运用:wx.chooseImage,成功后返回: res.localIds用于上传图片使用
上传图片:wx.uploadImage。
2.上传图片的时候务必是一张一张的上传的(建议采用递归)
3.一张图片上传成功后务必需要延迟个几百毫秒再执行下一张的上传。
案例:深圳艺星“#美力女生#星粉颜值夏令营,2019Yestar艺星整形”
Html
<div class="photos">
<p>同时选择上传1-9张照片,第一张为封面图</p>
<div class="photosInput">
<div id="dd"></div> //这里面是存储放置上传的图片的
<div onclick="ChoosePhoto()" id="chooseimgDiv" >选择图片</div>
</div>
</div>
js:
var imgA=new Array();
var imgserverId; //存储的图片拼接字符;
function ChoosePhoto(){
wx.chooseImage({
count: 9, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
document.getElementById("dd").innerHTML="";
imgA=[];
imgserverId="";
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
var htmlPhoto="";
for(var i=0;i<localIds.length;i++){
htmlPhoto +='<div class="imgdiv"><img src='+ localIds[i]+' /></div>';
}
syncUpload(localIds)
document.getElementById("dd").innerHTML+=htmlPhoto;
}
});
};
var syncUpload = function(localIds){
var localId = localIds.pop();
wx.uploadImage({
localId: localId.toString(), // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
//res.serverId 返回图片的服务器端ID
var serverId = res.serverId; // 返回图片的服务器端ID
imgA.push(serverId)
imgserverId=imgA;
if(localIds.length > 0){
window.setTimeout(function(){
syncUpload(localIds);
},100);
}else{
window.setTimeout(function(){
downloadImage(0);
},100);
}
}
})
}
题外话:
在ios中之前做项目时也有遇到一个需求是“分享朋友圈后抽奖次数+1”。的情况。
安卓能够好好的判断接收到用户分享成功。但是ios则不会成功。
我们的解决办法也是需要延迟几百毫秒才能正常成功的接收到苹果的分享反馈
js-jssdk微信H5选择多张图片预览并上传(兼容ios,安卓,已测试)的更多相关文章
- 原生js实现图片预览并上传
最近主导的PC客户端网站重构工程告一段落,下一阶段开始给公司APP开发H5页面,技术栈是react.最近碰到一个需求:需要在H5页面上添加身份证照片,预览并上传.因为要兼容安卓4.4以下版本的手机,所 ...
- 用js实现预览待上传的本地图片
js实现预览待上传的本地图片,代码如下: <form name="form5" id="form5" method="post" ac ...
- 基于“formData批量上传的多种实现” 的多图片预览、上传的多种实现
前言 图片上传是web项目常见的需求,我基于之前的博客的代码(请戳:formData批量上传的多种实现)里的第三种方法实现多图片的预览.上传,并且支持三种方式添加图片到上传列表:选择图片.复制粘贴图片 ...
- html5 选择多张图片在页面内预览并上传到后台
版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/huangxin112/article/details/74956462 需求:点击选择图片(可选多张) ...
- js多图预览及上传功能
<%-- Created by IntelliJ IDEA. User: Old Zhang Date: 2018/12/27 Time: 11:17 To change this templa ...
- 如何预览将要上传的图片-使用H5的FileAPI
这篇将要说的东西已经不新鲜了. 参考资料: Reading files in JavaScript using the File APIs (鉴于作者在美国, 我姑且认为作者母语是英语, 当然链接中有 ...
- H5-FileReader实现图片预览&Ajax上传文件
图片预览 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- jquery+html5+canvas实现图片 预览 压缩 上传
javascirpt (function($){ $.fn.extend({ aiiUpload:function(obj) { if(typeof obj !="object") ...
- 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)
文章地址:http://www.cnblogs.com/rubylouvre/p/4597344.html 一.window.URL 在Chrome中,window.URL和window.webkit ...
随机推荐
- nginx 499错误
原因: 服务响应时间太长,客户端自动断开链接. 解决: 1. 找到响应世间长的接口,看依赖的数据源(数据库,第三方接口等)响应时间是否超时,还是自己程序有逻辑问题. 可以通过加入日志打印时间消耗来确定 ...
- (六:NIO系列) 相关设计模式
出处: 反应器模式 vs 观察者模式 反应器模式 vs 生产者消费者模式 反应器模式 vs 观察者模式 反应器模式 是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式.当请求抵达 ...
- Thinkphp 获取最大值id值
有时候项目需要获取数据库最大的id值,比如生成订单,做排序号,那么Thinkphp 如何获取最大值id值. $info=D('Customer')->where('1=1')->order ...
- Handle Refresh Token Using ASP.NET Core 2.0 And JSON Web Token
来源: https://www.c-sharpcorner.com/article/handle-refresh-token-using-asp-net-core-2-0-and-json-web ...
- 时间戳位数不够13位,通过es6 的padEed补零
if(val.toString().length == 10){ val = val.toString().padEnd(13,"0")*1 //不够十三位放后面补零,超过13位也 ...
- Unity 官网无法访问|国外网站访问过慢|国外网站访问加速器
目录 1. 文档地址 2. 按 3. 工具下载地址 1. 文档地址 GitHub博客 https://coco5666.github.io/blog/articles/20190704-01/ 2. ...
- Oracle 附加日志(supplemental log)
参考资料: 1.https://blog.csdn.net/li19236/article/details/41621179
- Vue.js 技术揭秘学习 (3) render
Vue 的 _render 方法是实例的一个私有方法,它用来把实例渲染成一个虚拟 Node ,返回的是一个VNode 在 Vue 的官方文档中介绍了 render 函数的第一个参数是 createE ...
- Ubuntu 18.04 安装 Octave 5.1
最新版目前只能通过编译安装.折腾了半天终于搞定: 需要使用apt-get install先把各种 dependencies 安装好. 编译JIT需要安装sudo apt-get install llv ...
- Redis-缓存击穿/穿透/雪崩
缓存击穿/穿透/雪崩 Intro 使用缓存需要了解几个缓存问题,缓存击穿.缓存穿透以及缓存雪崩,需要了解它们产生的原因以及怎么避免,尤其是当你打算设计自己的缓存框架的时候需要考虑如何处理这些问题. 缓 ...