微信は写真を撮ったり、携帯電話のアルバムから図を選んだりして、自分のサーバーにアップロードします.


H 5を作るには、微信で使い、画像をアップロードする機能を実現する必要があります.
微信公衆番号のjs-sdkを研究したところ、画像のアップロードを実現する2つの方法があることが分かった.
  • 選択ピクチャ+取得ピクチャ
  • ピクチャ+アップロードピクチャ(serverIdに戻る)を選択し、フロントエンドがserverId(すなわちmedia_id)を取得すると、これをパラメータとしてバックグラウンドに「一時素材インタフェースの取得」
  • を要求する.
    関連公式文書:微信js-sdk:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html微信素材管理、仮素材取得:https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_temporary_materials.html
    1.ピクチャの選択+base 64フォーマットピクチャの取得
    wx.chooseImage({
      count: 1, //   9
      sizeType: ['original', 'compressed'], //             ,      
      sourceType: ['camera'], //              ,      
      success: function (res) {
        var localIds = res.localIds; //          ID  ,localId    img   src      
        var localId = localIds.pop();
        wx.getLocalImgData({
          localId: localId, //    localID
          success: function (res) {
            var localData = res.localData; // localData    base64  ,   img    
            that.onPhotoDataSuccess(localData);
          }
        });
      }
    });
    
    onPhotoDataSuccess(imageData) {
      Indicator.open();
      let img = 'data:image/jpeg;base64,' + imageData;
      // let img = 'data:image/png;base64,iVBORw0SUh...AABJRU5ErkJggg=='
      let mime = img.split(',')[0].match(/:(.*?);/)[1];
      let str = this.orderId + '-' + new Date().getTime() + '.' + mime.split('/')[1];
      //   file  
      let imgData = {
        base64_image_content: encodeURIComponent(img),
        name: str
      }
      this.$post('upload', imgData).then(res => {
        let returnImg = res.data.file_url;
        Indicator.close();
      }).catch(err => {
        Indicator.close();
        Toast(err)
      })
    }
    

    2.ピクチャ+アップロードピクチャを選択(serverIdに戻る)
    wx.chooseImage({
      count: 1, //   9
      sizeType: ['original', 'compressed'], //             ,      
      sourceType: ['album', 'camera'], //              ,      
      success: function (res) {
      var localIds = res.localIds; //          ID  ,localId    img   src      
      	wx.uploadImage({
    	  localId: localIds.pop(), //           ID, chooseImage    
    	  isShowProgressTips: 1, //    1,      
    	  success: function (res) {
    	    var serverId = res.serverId; //          ID
    	    //         , serverId   ,     
    	  }
    	});
      }
    });