美文网首页程序员
微信浏览器上传图片(多张)

微信浏览器上传图片(多张)

作者: 人间四月天i | 来源:发表于2021-01-09 15:54 被阅读0次
    // 微信上传多张图片
    
            <div class="pic">
                <div class="uploadImage" onclick="ChoosePhoto()"></div>
            </div>
    
            var wurl = window.location.href;
            var wx_share = function () {
                var url = wurl;
                $.ajax({
                    url: "xxxxx",
                    type: "post",
                    data: { "index_url": url },
                    success: function (res) {
                        if (res.code == 200) {
                            var data = res.data.config;
                            wx.config({
                                debug: false, 
                                appId: data.appId, // 必填,企业号的唯一标识
                                timestamp: data.timestamp, // 必填,生成签名的时间戳
                                nonceStr: data.nonceStr, // 必填,生成签名的随机串
                                signature: data.signature,// 必填,签名,见附录1
                                jsApiList: [
                                    'onMenuShareTimeline',
                                    'onMenuShareAppMessage',
                                    'chooseImage',
                                    'uploadImage',
                                    'downloadImage'
                                ]
                            });
                        }
                    },
                    error: function (res) { }
                });
            };
            wx_share();
    
            var imgA=new Array();
            var imgserverId;  
            function ChoosePhoto(){
                wx.chooseImage({
                    count: 9, 
                    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
                    sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
                    success: function (res) {
                        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)
                        $(".uploadImage").before(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);       
                        }
                    }
                })
            }
    
    
    下面是file 上传图片,部分安卓手机不支持多张上传
    <button id="upload_img">添加</button>
    <input type="file"  accept="image/*" id="file_input" multiple style="display:none;"/> 
    <div class="insert"></div>
    // accept 设置上传的为图片 
    // multiple 多张上传 ios可以,安卓部分手机不可以,这是由于这些机型的文件上传存在内存泄漏,会导致微信闪退,所以微信内置浏览器将文件上传屏蔽。
    //这就导致这些机型的用户在使用微信浏览器访问某些需要上传图片的网页时功能不正常。
    
    
    window.onload = function(){
        var input = document.getElementById("file_input");
        var result;
      
        function readFile(){
            var iLen = this.files.length;
            for(var i=0;i<iLen;i++){
                if (!input['value'].match(/.jpg|.gif|.png|.jpeg|.bmp/i)){  //判断上传文件格式
                    return alert("上传的图片格式不正确,请重新选择");
                }
                var reader = new FileReader();
                reader.readAsDataURL(this.files[i]);  //转成base64
                reader.fileName = this.files[i].name;
    
                reader.onload = function(e){
                    result = '<div><img src="'+this.result+'" /></div>';
                    $(".insert").append(result)
                }
            }
        }
        $("#upload_img").click(function(){
            $("#file_input").val()
            $("#file_input").click();
        })
    }
    

    相关文章

      网友评论

        本文标题:微信浏览器上传图片(多张)

        本文链接:https://www.haomeiwen.com/subject/phmcaktx.html