鍍金池/ 問答/網(wǎng)絡安全  HTML/ EGG 如何處理POST請求小程序返回的BUFFER數(shù)據(jù)

EGG 如何處理POST請求小程序返回的BUFFER數(shù)據(jù)

微信小程序生成二維碼的方法是

獲取小程序二維碼
接口C:適用于需要的碼數(shù)量較少的業(yè)務場景

接口地址:

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

獲取 access_token 詳見文檔

POST 參數(shù)說明

參數(shù) 類型 默認值 說明
path String 不能為空,最大長度 128 字節(jié)
width Int 430 二維碼的寬度

注意:通過該接口生成的小程序二維碼,永久有效,數(shù)量限制見文末說明,請謹慎使用。用戶掃描該碼進入小程序后,將直接進入 path 對應的頁面。

按照阿里的文檔解釋,阿里oss的sdk支持buffer數(shù)據(jù)

用戶也可以通過put接口簡單地將Buffer中的內(nèi)容上傳到OSS:

var co = require('co');
var OSS = require('ali-oss');
var client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: 'Your bucket name'
});
co(function* () {
  var result = yield client.put('object-key', new Buffer('hello world'));
  console.log(result);
}).catch(function (err) {
  console.log(err);
});

目前我是這么寫的

const resData = {
        path: app.config.QrCodeRes.path + uid,
        width: app.config.QrCodeRes.width,
      };
      
const img = yield app.curl(app.config.QrCodeRes.url + token, {
        method: 'POST',
        data: { resData },
      });

const pathDateMake = moment().toObject();
const path = '/Qrcode/' + pathDateMake.years + '/' + uid + '.png';
const result = yield this.ctx.oss.put(path, new Buffer(img.data));

不知道為何,上傳到OSS的圖片下載下來都是黑屏一片

很明顯,對BUFFER的處理不對

求解如何正確的處理

回答
編輯回答
舊時光

已經(jīng)解決了,粗心提交的數(shù)據(jù)不對

data: { resData },

因為上面已經(jīng)定義了resData的數(shù)據(jù)。。。所以返回來的buffer在轉換后其實提示的是錯誤。

2017年8月12日 12:29