评论

腾讯的一小步,开发者的一大步:说一说Cloud.CDN

使用Cloud.CDN避开wx.cloud.callFunction的传输大小限制

最近在文档中偶然发现了这么一段,测试完之后,居然情不自禁的想要夸一下腾讯:

故事是这样的:

很久之前,我们小程序上有图片上传前做安全检测的需求,选择的是云函数的实现方案,图片压缩后直接以Buffer的形式传递。刚上线的几个月,一切运行正常,可是突然某一天(几个月前)开始,陆续有用户反馈上传会失败,当然也不是100%失败,个别幸运儿还是可以成功的。排查发现,是小程序在调用云函数的时候报错了(为了写文章,异常都是最新截图的),

第一种形式的异常(安卓):errCode: -404012 polling exceed max timeout retry. 说“ 超过了超时重试的最大次数”,如果真的以为是暂时的网络不好或者云函数那边临时出了什么状况,等待你的将是现实的沉痛一击,因为它从此再也没有好过:

第二种形式的异常(iOS):errCode: -1 | errMsg: cloud.callFunction:fail Error: data exceed max size. 说“数据超限了”,意思是嫌弃传的图片太大了,恐怕这也是导致安卓上报超时的原因:

以前都是好的,突然从某一天开始就不行了,后来,终于在等待中明白,应该是腾讯收紧了cloud.callFunction的数据大小限制,再也没有放宽...

由于这个功能比较次要,用得也少,就一直没改,直到最近才腾出手来。本来已经决定要采取图片先临时传到COS,再把COS URL传给云函数的方案了,但是在做之前想搞明白callFunction的数据大小限制上限到底是多少,居然几十K的图片都传不了,以前的文档是啥也没写的,但出于习惯,我又翻了下文档,于是看到了那段让人惊喜的文字,它的意思是,我们准备要做的这个功能,腾讯用"wx.cloud.CDN"已经提供了!!!

跳到对应的文档链接,说是从2.12.0也就是最新版的基础库开始支持,虽然2.12.0现在占比只有60%多,但会一天天增加。

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/utils/Cloud.CDN.html

那就来看看它的效果如何吧,调用超级简单:

调用结果如下,图片会先传到CDN,然后再拿返回的临时图片URL传给cloud.callFunction:

完美!callFunction的传输上限我已经不再关心了~

最后一次编辑于  2020-07-19  
点赞 1
收藏
评论

3 个评论

  • James💤
    James💤
    01-28

    违规的上传到CDN不用管吧

    01-28
    赞同
    回复 1
    • Why not?
      Why not?
      02-01
      应该不用管的,CDN不到半小时可能就把图片删掉了,检测是开发者自己的事
      02-01
      回复
  • 浩
    2020-09-08

    大佬,拿到临时图片URL传到云函数,云函数那边怎么通过这个URL上传图片到云存储啊

    2020-09-08
    赞同
    回复 1
  • 日月明
    日月明
    2020-07-28

    请问一下 ,imgSecCheck云函数的media 参数的value类型是Buffer,那如何把 返回的临时图片URL转化为Buffer类型?

    2020-07-28
    赞同
    回复 7
    • Why not?
      Why not?
      2020-07-28
      2020-07-28
      1
      回复
    • 日月明
      日月明
      2020-07-28回复Why not?
      谢谢,我去研究一下
      2020-07-28
      回复
    • 日月明
      日月明
      2020-07-28回复Why not?
      可以麻烦您截个图吗,我这边复制进去提示axios is not defined
      2020-07-28
      回复
    • Why not?
      Why not?
      2020-07-28回复日月明
      axios你得先安装 https://www.npmjs.com/package/axios
      2020-07-28
      回复
    • 日月明
      日月明
      2020-07-28回复Why not?
      嗯嗯,刚刚已经百度到了,现在可以用了,谢谢您
      2020-07-28
      回复
    查看更多(2)
登录 后发表内容