微信pc端和手機上傳處理

一.緣由ajax

  在微信經過電腦版和瀏覽器登陸時,調用了微信上傳的接口,wx.getLocalImgData或返回失敗。json

  沒辦法,只有處理當電腦上傳時,使用ajaxuploadfile上傳。瀏覽器

二.方法微信

function upload_weixin_pic(e) {
    e=e||{};
    e={
        id:e.id||'get_pic_url',
        hight:e.hight||0,
        width:e.width||0,
        chooseImage:function () {
            wx.chooseImage({
                count: 1,
                sizeType: ['original', 'compressed'], // original 原圖,compressed 壓縮圖,默認兩者都有
                sourceType: ['album', 'camera'], // album 從相冊選圖,camera 使用相機,默認兩者都有
                success: function (res) {
                    e.getLocalImgData(res);
                }, fail: function () {
                    //layer.alert("選擇圖片失敗", {icon: 2, time: 3000, title: "失敗"});
                    openTheFile(e);
                }, cancel: function (res) {
                }
            })
        }, getLocalImgData:function (res) {
            layer.msg('上傳中', {icon: 16, shade: 0.3, time: 99990000});
            wx.getLocalImgData({
                localId: res.localIds[0], // 圖片的localID
                success: function (res) {
                    e.getBase64(res);
                }, fail: function (v) {
                    layer.closeAll();
                    /*if(v.errMsg.indexOf('getLocalImgData')>-1){
                        openTheFile(e);
                    }else{
                        console.info(e);
                        layer.alert("下載圖片失敗", {icon: 2, time: 3000, title: "失敗"});
                    }*/
                    openTheFile(e);
                }, complete: function (res) {

                }
            });
        }, getBase64:function (res) {
            $.post("/Public/weixin_base64", {base64: res.localData,hight:e.hight,width:e.width}, function (path) {
                layer.closeAll();
                e.success(path);
            })
        }, success:e.success|| function (path) {
            //path
        }
    }

    if(isMobile()){
        e.chooseImage();
    }else{
        openTheFile(e);
    }
}
var previewImages_e={};
function openTheFile(e) {
    if($("#"+e.id).length == 0){
        var input=$('<input type="file" style="display: none" name="'+e.id+'" id="'+e.id+'" >');
        input.attr("onchange",'previewImages()');
        $("body").append(input);
    }
    previewImages_e=e;
    $("#"+e.id).click();
}
function previewImages() {
    var e=previewImages_e||{};
    var lay = layer.msg('上傳中', {icon: 16, shade: 0.3, time: 99990000});
    $.ajaxFileUpload({
        url: "/Public/UploadPic",
        secureuri: false,
        fileElementId: e.id,
        type: "post",
        data:{
            hight:e.hight,
            width:e.width
        },
        dataType: "json",
        async: false,
        success: function (data, status) {
            layer.close(lay)
            if (data.code == 0) {
                e.success(data.url)
            } else {
                layer.alert(data.msg, {icon: 2})
            }
        },
        error: function (data, status, e) {
            layer.close(lay);
            console.info(e)
            layer.alert("上傳圖片異常,請選擇新的圖片!")
        }
    })
}

三.調用方法app

  這個方法我使用了layui、ajaxfileupload插件async

  調用時post

  能夠直接調用方法名ui

upload_weixin_pic()

 

//也能夠url

      upload_weixin_pic({
                success:function (path) {
                    //path
                }
            })
相關文章
相關標籤/搜索