使用微信 SDK 上傳圖片到七牛


總體思路是:在微信下選好圖片后將圖片上傳到微信服務器,在后端使用微信服務器返回的圖片 serverId 加上調用接口的 ApiTicket 通過七牛的 fetch 接口向微信服務器下載多媒體文件的接口請求圖片的二進制流,然后保存至自己七牛賬號內的特定 bucket。
大致過程如下:

1.調用微信 chooseImage 接口,成功后調用 uploadImage 接口

wx.chooseImage({
               count: 1,
               sizeType: ['original', 'compressed'],
               sourceType: ['album', 'camera'],
               success: function(res) {
                   $scope.localIds = res.localIds; //存儲localId供本地預覽
                   wx.uploadImage({
                       localId: res.localIds[0],
                       isShowProgressTips: 1,
                       success: function(res) {
                           WishData.mediaId = res.serverId; //圖片上傳成功后保存serverId然后發給后台,讓后台根據serverId去微信服務器下載對應的圖片
                       }
                   });
               }
           });

2.在后台使用七牛的 fetch 接口向微信服務器請求文件並存入自己的七牛倉庫

var client = new qiniu.rs.Client();
var random_key = Math.random().toString(36).substr(2, 15); //生成一個隨機字符串來給圖片命名
//調用七牛 fetch 接口,具體用法參照文檔
client.fetch('http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=' + req.session.apptoken + '&media_id=' + req.body.mediaId, 'gdutgirl', random_key, function(err, ret) {
           if (err) {
               console.log(err.error);
               next();
           } else {
               console.log('圖片請求成功');
               var url = qiniu.rs.makeBaseUrl('7xnxuw.com1.z0.glb.clouddn.com', random_key); //生成圖片的可訪問url
               req.body.imgurl = url;
               next();
           }

       });

其中需要特別注意的地方是,通過微信返回的 serverId 去微信服務器下載圖片的接口微信公眾號微信企業號是不一樣的(微信企業號開發文檔沒有提供媒體下載接口以為是同公眾號下載接口一樣,結果總是提示 aceess_token


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM