使用微信JSSDK进行图片选择和上传

最近我在用 PHP 做某微信公众号的开发,其中用到了微信jssdk进行图片的选择和上传。在参考了微信官方提供的jssdk文档之后,大致有了思路,即先选图或拍照,获得 localIds,再上传图片,成功后获得 serverId,之后就可以根据 serverId,从微信服务器获取图像。 然而在选择图片后紧接着开始上传图片,却出现了问题:脚本总会在选择图片还没结束的时候直接就走到文件上传,导致上传时会出现localId为空的错误。动手搜索了一下,果然有解决方法,参考:

wx.chooseImage({
    success: function (res) {
        if(res.localIds.length == 1) {
            //alert('开始上传!');
            setTimeout(function (){
                wx.uploadImage({
                    localId: res.localIds[0],
                    isShowProgressTips: 1,
                    success: function (res) {
                        //上传成功后的操作
                    },
                    fail: function (res) {
                        alert(JSON.stringify(res));
                    }
                });
            },100);
        }
     } 
 });  

将上传动作放到setTimeout()里面就OK了!

参考:

微信JS-SDK说明文档
微信JS—SDK嵌套选择图片和上传图片接口,实现一键上传图片,遇到问题