getWXACodeUnlimit返回的二进制保存到云存储
发布于 6 年前 作者 pingkang 13184 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

问题:接口返回的二进制如何转为文件并保存到云存储

流程:

1.小程序向云函数发送请求,请求云开发生成返回图片地址(在云存储的地址)

2.云函数接收到请求,请求获取accessToken  (已完成)

3.通过getWXACodeUnlimit得到返回的二维码(图片二进制内容) (已完成)

4.将二维码保存至云存储

  • 希望提供的能力

将二维码保存至云存储 或 直接发送到云存储指定位置

2 回复

云函数里应该用的是server端的sdk,这个是支持传二进制的

详见文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/storage/uploadFile.html

var rp = require('request-promise');//还需要npm install request


 


//以下代码写在exports.main函数里
async function request(url) {
    return new Promise(function (resolve) {
      rp(url)
        .then(function (data) {
          resolve(data);
        })
        .catch(function () {
          resolve({ err: 1 });
        });
    });
  }
 
  var createOpt = function (token, scene, page) {
    var options = {
      method: 'POST',
      uri: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + token,
      encoding: null//一定要加这个!!!!,不然存进去乱码,试了好久才发现是这里的问题,发出来给大家节约时间
      body: {
        "scene": scene,
        "page": page
      },
      json: true // Automatically stringifies the body to JSON
    };
    return options
  }
 
 
    var options = createOpt('access_token自己获取', 'test=key&ffff=lalalla''pages/index/index')
    var fileStream = await request(options) 
 
    return await cloud.uploadFile({
      cloudPath: 'testCode3.png',
      fileContent: fileStream,
    })

回到顶部