1. 程式人生 > >微信pc端和手機上傳處理

微信pc端和手機上傳處理

一.原因

  在微信通過電腦版和瀏覽器登入時,呼叫了微信上傳的介面,wx.getLocalImgData或返回失敗。

  沒辦法,只有處理當電腦上傳時,使用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("上傳圖片異常,請選擇新的圖片!") } }) }

三.呼叫方法

  這個方法我使用了layui、ajaxfileupload外掛

  呼叫時

  可以直接呼叫方法名

upload_weixin_pic()

 

//也可以

      upload_weixin_pic({
                success:function (path) {
                    //path
                }
            })