微信jsjdk的照片选择、上传使用

这里首先默认你已经稍微浏览过微信的文档说明,并完成jdk的config流程。

然后直接把照片选择、上传的两个方法放出来:

function photoSelect(str, num){//照片选择,str为数据指向
    num = !num? 1:num;//单次选择数量,num为空时,单选
    wx.chooseImage({
        count: num,//当num大于9,没有反应,打开调试状态会有超出上限的报错
        sizeType: ['original', 'compressed'],
        success: function (res) {
            var localIds = res.localIds;
            photoUpload(str, localIds);
        }
    });
}
function photoUpload(str, localIds){//照片上传
    var localId = localIds.splice(0, 1);
    //ios专用
    if(localId.indexOf("wxlocalresource") != -1){
        localId = localId.replace("wxlocalresource", "wxLocalResource");
    }
    //当不使用定时器的时候,连续上传1+照片后,会莫明其妙滴不再执行,迫不得已掏出定时器这个大杀器~
    setTimeout(function(){
        wx.uploadImage({//这个玩意一次只能上传一张图片
            localId: localId.toString(),
            isShowProgressTips: 1,
            success: function(res){
                var serverId = res.serverId;
                photoSelectData[str].url(localId,serverId);//这个根据自己需求添加
                //localIds没有传完,即回调函数继续上传
                if(localIds.length >= 1){
                    photoUpload(str, localIds);
                }
            },
            fail: function(res){
                alert('照片上传失败,请稍后再试!');
            }
        })
    },50);
}

功能测试环境是公众平台的测试号。
图片上传,当不使用定时器的时候,连续上传1+照片后,会莫明其妙滴不再执行,知道什么情况的,或者能不使用定时器解决的兄弟情告知我一声。
图片上传中,截取的localId需要使用toString()转换一下才能正确识别。

功能代码完成后,我们来看看数据的处理,分单选和多选两种情况,一起放出来(不含样式,具体使用,还得看具体需求):

//标签
//单张上传样例
<a class="photo-select" data-id="firstPhoto">
    <img src="" id="firstPhoto"/>
</a>
<a class="photo-select" data-id="secondPhoto">
    <img src="" id="secondPhoto"/>
</a>
//多张上传样例
<div class="batch-upload">
    <div class="batch-title">其他照片</div>
    <div class="batch-pic" id="otherPhoto">
    </div>
    <a class="photo-select" data-id="otherPhoto" data-num="9">批量上传</a>
</div>
//微信config处理
wx.ready(function(){
    $('.photo-select').click(function(){
        var $this = $(this);
        var str = $this.attr('data-id');
        var num = $this.attr('data-num')?$this.attr('data-num'):null;
        photoSelect(str, num);
    });
});
wx.error(function(){
    $('.photo-select').click(function(){
        alert('微信权限获取失败,请稍后再试!');
    });
});

//数据处理集合
//包括serverId的信息保存,是否有图片的状态判断,以及图片展示
photoSelectData = {
    //单张上传
    firstPhoto: {
        serverId: '',
        state: false,
        url: function(data,serverId){
            $('#firstPhoto').attr('src',data);
            this.state = true;
            this.serverId = serverId;
        }
    },
    secondPhoto: {
        serverId: '',
        state: false,
        url: function(data,serverId){
            $('#firstPhoto').attr('src',data);
            this.state = true;
            this.serverId = serverId;
        }
    },
    //批量上传
    otherPhoto: {
        serverId: [],
        state: false,
        url: function(data, serverId){
            var html = '<div class="pic">'
                            +'<i class="pic-close" onclick="photoCancel('+"'otherPhoto'"+',this)"></i>'
                            +'<img src="'+data+'">'
                        +'</div>';
            $('#otherPhoto').append(html);
            this.serverId.push(serverId);
            photoSelectData.batchState('otherPhoto');
        },
        //批量上传状态判断
        batchState: function(str){
            if(photoSelectData[str].serverId.length >= 1){
                photoSelectData[str].state = true;
            }else{
                photoSelectData[str].state = false;
            }
        }
    }
}

//多张上传的单张图片删除
function photoCancel(str, obj){
    var $obj = $(obj).parent();
    var $pic = $('#'+str+' .pic');
    var index = $pic.index($obj);
    $pic.eq(index).remove();
    photoSelectData[str].serverId.splice(index,1);
    photoSelectData.batchState(str);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • document.write(''); } if ( (document.cookie && document.c...
    一副怂样阅读 695评论 0 1
  • AnswerYas阅读 159评论 0 0
  • 人生有许多个第一次,竟然没有想到我的第一次竟然给了他——西贝大学。 时间总是过得很快,简短的四天旅行,转眼间就结束...
    捞友君阅读 772评论 0 3
  • 老爸现在待的普通病房有三个病床,老爸住在中间的14号床位。一进门的右手边是卫生间,左手边是三个柜子,分别存放病人及...
    Y伊歆Y阅读 307评论 0 1
  • 不知不覺寫作已經到了23號,不算今天的,也已經寫了二十二篇了,也不算少了。 我組的一個小夥伴偷偷地問我:我們寫的是...
    一棵樹阅读 128评论 0 0