微信jssdk上传手机照片到服务器并能显示在手机界面上

接到一个开发任务,需要上传手机照片到自己的服务器,并使用微信JSSDK接口,将即将上传的图片显示到手机页面上,点击上传才能上传,如果照片选中了需要删除,可以在页面上删除。
我参考了一篇博客写的不错:https://blog.csdn.net/sinat_35861727/article/details/72722243
大体是根据这篇博客写的,对于安卓手机和苹果手机都适用,但是我发现大多数只能根据一张图片的localId显示,如果要显示多张,并能够删除,需要进行递归操作,在uploadImage代码里面递归:
选中后显示在article里面:

 <article id="pics" class="middleBlock" >
 </article>
这里是js,选择图片后显示在手机屏幕上的代码:
  wx.chooseImage({
                count: 9,
                sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
                sourceType: ['album', 'camera'],
                success: function (res){
                localIds = res.localIds;
                    //2.显示图片
                    if (window.__wxjs_is_wkwebview){
                        //判断当前使用的webview内核
                        //获取本地图片,此接口仅在 iOS WKWebview 下提供,用于兼容 iOS WKWebview 不支持 localId 直接显示图片的问题
                        $.each(localIds, function (i, item) {
                            wx.getLocalImgData({
                                //苹果手机用localData显示照片,img标签显示图片
                                localId: item, // 图片的localID
                                success: function (res) {
                                    var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                                    //iOS 系统里面得到的数据,类型为 image/jgp,因此需要替换一下
                                    localData = localData.replace('jgp', 'jpeg');
                                    //如果选中了图片,就加在#pics标签里面
                                    if(a!=0){
                                        $("#pics").append('<img  id=' + b + ' src="' + localData + '"/>');
                                        $("#pics").append('<div class="Pics_div" onclick="delPic(' + b + ')" id=' + b + '><span>×</span></div> ');
                                        SumLocalIds.push(localData);
                                        if(localIds.length>0){
                                            b++;
                                        }
                                    }else{
                                        $("#pics").append('<img id=' + i + ' src="' + localData + '"/>');
                                        $("#pics").append('<div class="Pics_div" onclick="delPic(' + i + ')" id=' + i + '><span>×</span></div> ');
                                        SumLocalIds.push(localData);
                                        if(localIds.length>0){
                                            b++;
                                        }
                                    }
                                }
                            });
                        });
                        $("#uplaodBtn").removeAttr("disabled");
                        a++;
                    }else{
                        $.each(localIds, function (i, item){
                            //最多只能上传的照片数量
                            if(a!=0){ //不是第一次点击上传按钮
                                $("#pics").append('<img id=' + b + ' src="' + item + '"/>');
                                $("#pics").append('<div class="Pics_div" onclick="delPic(' + b + ')"  id=' +b+ '><span>×</span></div> ');
                                SumLocalIds.push(item);
                                b++;
                            }else{
                                $("#pics").append('<img id=' + i + ' src="' + item + '"/>');
                                $("#pics").append('<div  class="Pics_div" onclick="delPic(' + i + ')" id=' + i + '><span>×</span></div> ');
                                SumLocalIds.push(item);
                                b++;
                            }
                        });
                        $("#uplaodBtn").removeAttr("disabled");
                        a++;
                    }
                }
            });
           ```
下面是删除图片的操作:

  function delPic(i) {
                $("#pics").find("img[id='"+i+"']").remove();
                $("#pics").find("div[id='"+i+"']").remove();
                $("#uplaodBtn").removeAttr("disabled");
                SumLocalIds.splice(i, 1,'xx');//这里是先替换成xx,后来再查找出来删除所有localId为xx的localId.
    }
下面是上传图片到微信服务器:
 wx.uploadImage({
            localId: localId.toString(),  // 需要上传的图片的本地ID,由chooseImage接口获得
            isShowProgressTips: 0, // 默认为1,显示进度提示
            success: function (res) {
                var serverId = res.serverId;
                serverIds.push(serverId);
                res.serverId;   // 返回图片的服务器端ID
                if(localIds.length > 0){
                    syncUpload(localIds); 
                }else {
                    //从服务器拉取照片到本地服务器
                    saveServerId(serverIds);
                }
            }
        });
    ``````
    

猜你喜欢

转载自blog.csdn.net/fu18838928050/article/details/86999921