ionic3開發(fā)企業(yè)微信之上傳個人頭像

在應(yīng)用的個人中心到踏,總希望用戶可以通過點擊頭像打開攝像頭進行圖片上傳,如何實現(xiàn)呢我抠?我大致分了幾步:
1乏沸、通過wx.chooseImage 調(diào)用相機打開圖片 ,然后返回選定照片的本地ID列表美莫,localId能夠作為img標簽的src屬性顯示圖片页眯。

uploadImage(){
    let that=this;
    wx.chooseImage({
      count: 1, // 默認9
      sizeType: ['original', 'compressed'], // 能夠指定是原圖還是壓縮圖,默認二者都有
      sourceType: ['album', 'camera'], // 能夠指定來源是相冊還是相機厢呵,默認二者都有
      success: function (res) {
        var localIds = res.localIds; // 返回選定照片的本地ID列表窝撵,localId能夠作為img標簽的src屬性顯示圖片
        that.uploadImg(localIds[0]);
      }
    });
  }

2、通過wx.uploadImage上傳圖片到微信服務(wù)器上襟铭,并返回serverId 碌奉。重點:此處通過Promise返回resolve,是為了防止請求異步問題(實際情況就是這樣)

uploadImg(e){
    let that=this;
    that.picUrl="";
    this.nativeService.uploadImage(e).then(serverId => {
      let params = new HttpParams()
        .set("mediaId", serverId)
        .set('loginFrom', 'app');
      let url = GlobalVariable.BASE_URL + 'wx.do?method=downloadMedia';
      this.appService.GET(url, params, (res, err) => {
        if (res) {
          that.picUrl=GlobalVariable.BASE_URL+that.userPicture;
          this.appService.alert("圖片上傳成功寒砖!");
        }
        if (err) {
          console.log(err)
        }
      });
    });
  }


補上nativeService.ts文件
  /**
   * 上傳照片
   */
  uploadImage(localId:string): Promise<string> {
    return new Promise((resolve) => {
      wx.uploadImage({
        localId: localId, // 需要上傳的圖片的本地ID赐劣,由chooseImage接口獲得
        isShowProgressTips: 1, // 默認為1,顯示進度提示
        success (res) {
          let serverId = res.serverId;
          console.log("serverId="+serverId)
          resolve(serverId);
        }
      });
    });
  }

3哩都、調(diào)用本地后臺上傳方法魁兼,將mediaId傳遞到后臺處理

    //獲取媒體文件
    @FieldMeta(description="獲取媒體文件",isPermissionNeeded=false)
    @RequestMapping(params="method=downloadMedia")
    public void downloadMedia(HttpServletRequest request, HttpServletResponse response,String mediaId) throws Exception {
        System.out.println(mediaId);
        if(StringUtils.isNotBlank(mediaId)) {
            AccessToken at=TokenThread.accesstoken;
            String token=at.getToken();
            String requestUrl = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID";
            requestUrl = requestUrl.replace("ACCESS_TOKEN", token).replace(
                    "MEDIA_ID", mediaId);
            HttpURLConnection conn = null;
            try {
                URL url = new URL(requestUrl);
                conn = (HttpURLConnection) url.openConnection();
                conn.setDoInput(true);
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(30000);
                conn.setReadTimeout(30000);
                BufferedInputStream bis = new BufferedInputStream(
                        conn.getInputStream());
                ByteArrayOutputStream swapStream = new ByteArrayOutputStream();  
                byte[] buff = new byte[100];  
                int rc = 0;  
                while ((rc = bis.read(buff, 0, 100)) > 0) {  
                    swapStream.write(buff, 0, rc);  
                }  
                byte[] filebyte = swapStream.toByteArray();  
                boolean hasCreate=this.uploadImageToServer(request,filebyte);
                Success success = new Success();
                if(hasCreate){
                    success.setMsg("Y");
                }else{
                    success.setMsg("N");
                }
                success.setSuccess(true);
                CommonHelper.responseToFront(response, success);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(conn != null){
                    conn.disconnect();
                }
            }
        }else{
            Success success = new Success();
            success.setSuccess(true);
            success.setMsg("N");
            CommonHelper.responseToFront(response, success);
        }

    }
    
    public boolean uploadImageToServer(HttpServletRequest request,byte[] bytes){
        //上傳圖片到服務(wù)器
        String userId = (String)request.getSession().getAttribute("userId");
        String servletPath = request.getSession().getServletContext().getRealPath("/attachment/userPicture");
        File f = new File(servletPath);
        if(!f.exists()) {
            f.mkdirs();
        }
        String filePath = servletPath + File.separator + userId +".jpg";
        
        InputStream in = new ByteArrayInputStream(bytes); 
        BufferedImage image;
        try {
            image = ImageIO.read(in);
            in.close();//必須關(guān)閉 不然臨時文件 會被占用而導(dǎo)致刪除不了
            //3.按照指定尺寸縮小
            Thumbnails.of(image).size(200, 200).keepAspectRatio(false).toFile(new File(filePath));
            return true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }
    }

到此,頭像將可以上傳成功啦~記得應(yīng)用的域名配置別搞錯了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漠嵌,一起剝皮案震驚了整個濱河市咐汞,隨后出現(xiàn)的幾起案子盖呼,更是在濱河造成了極大的恐慌,老刑警劉巖化撕,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件几晤,死亡現(xiàn)場離奇詭異,居然都是意外死亡植阴,警方通過查閱死者的電腦和手機锌仅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墙贱,“玉大人热芹,你說我怎么就攤上這事〔移玻” “怎么了伊脓?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長魁衙。 經(jīng)常有香客問我报腔,道長,這世上最難降的妖魔是什么剖淀? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任纯蛾,我火速辦了婚禮,結(jié)果婚禮上纵隔,老公的妹妹穿的比我還像新娘翻诉。我一直安慰自己,他們只是感情好捌刮,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布碰煌。 她就那樣靜靜地躺著,像睡著了一般绅作。 火紅的嫁衣襯著肌膚如雪芦圾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天俄认,我揣著相機與錄音个少,去河邊找鬼。 笑死眯杏,一個胖子當著我的面吹牛夜焦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播役拴,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼糊探,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起科平,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤褥紫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瞪慧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體髓考,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年弃酌,在試婚紗的時候發(fā)現(xiàn)自己被綠了氨菇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡妓湘,死狀恐怖查蓉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榜贴,我是刑警寧澤豌研,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站唬党,受9級特大地震影響鹃共,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驶拱,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一霜浴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓝纲,春花似錦阴孟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翁狐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凌蔬,已是汗流浹背露懒。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砂心,地道東北人懈词。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像辩诞,于是被迫代替她去往敵國和親坎弯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 先引入JS 文件 this.wxShare() 在created里調(diào)用 首先登陸微信公眾號 JSSDK使用步驟 步...
    寄魚予海與你閱讀 6,681評論 1 3
  • 微信公眾號開發(fā) ?前面做過 HG 項目的微信端,里面用到微信掃碼抠忘、支付撩炊、圖片選取、拍照崎脉、分享的功能拧咳。用到 weix...
    Ghnhxg閱讀 524評論 1 1
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,700評論 0 15
  • 小程序面試題 小程序授權(quán)登錄流程 0、如何獲得用戶信息...
    X秀秀閱讀 1,809評論 0 8
  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔囚灼、通過社區(qū)右上角搜索搜索已經(jīng)存在的問題骆膝。 寫一個簡明扼要的標題,并且...
    極樂叔閱讀 13,394評論 0 3