微信上传多张图片问题(兼容ios,安卓)

做微信开发的时候,进行多张图片的上传,安卓会出现上传不完全的现象,是因为异步的问题,建议可以看一下js异步处理的方式。附代码

var ua = navigator.userAgent.toLowerCase();
if (ua.match(/iphone/i) == "micromessenger") {
    var ios = true;
} else {
    var ios = false;
}
wx.ready(function () { 
     wx.chooseImage({
        count: upload_imgs_num, // 默认9
        sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function(res) {
            var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
            var uploadCount = 0;
            var localIdLength = parseInt(localIds.length);
            var now_img_num = $('#img_num').val();
            var totlal_img_num = parseInt(now_img_num) + localIdLength;
            upload_imgs_num -= localIdLength;
            var upload = function() {
                wx.uploadImage({
                    localId: '' + localIds[uploadCount],
                    isShowProgressTips: 1,
                    success: function(res) {
                        serverId = res.serverId;
                        var people_img = $("#people_img").val();
                        if(people_img != 0) { //这里是接收上传后的serverId  后台可以通过serverId从微信拉取图片
                            $("#people_img").val(people_img + ' ' + serverId);
                        } else {
                            $("#people_img").val(serverId);
                        }
                        if (ios || window.__wxjs_is_wkwebview) { //ios需要进一步处理
                            var localId = localIds[uploadCount];
                            wx.getLocalImgData({
                                localId: localId,
                                success: function (res) {
                                    var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                                    localData = localData.replace('jgp', 'jpeg');  //serverId可以展示成图片
                                    var img = '<li><img src="' + localData + '" alt=""><span class="del" οnclick="del(this);"></span></li>'
                                    $('#test2').before(img);
                                },
                                fail: function (res) {
                                    alert('图片暂时无法查看,请重试');
                                }
                            })
                        } else { //安卓直接用localId展示
                            var img = '<li><img src="' + localIds[uploadCount] + '" alt=""><span class="del" οnclick="del(this);"></span></li>'
                            $('#test2').before(img);
                        }
                        if (uploadCount < localIdLength) {
                            uploadCount++;
                            return new Promise((resolve, reject) => { //解决异步问题
                                setTimeout(() => {
                                   upload();
                                  resolve()
                                }, 200)
                            })
                        }
                        $("#img_num").val(uploadCount);
                    },
                });
            }
            upload();
        }
    });
})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值