收藏
回答

图片内容安全检测imgSecCheck,在开发者工具上可以正常调用,手机上或者调试模式下报错超时?

之前提交了小程序,因为没有添加图片内容审核功能,审核没有通过。于是尝试添加图片安全检测imgSecCheck函数

目前,在开发者工具上,可以正常使用,并且可以检测出违规图片。但是到了代码上传,在手机上打开体验版小程序,手机就卡着,一直在检测图片内容这一步。在开发者工具上,用调试模式,手机上上传一张图片之后也是如此,卡住了,大概半分钟后出现如下bug

Error: errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1589513780459-0.8650020501281841) (trace: 11:36:20 start->11:36:35 timeout, retry->11:36:51 timeout, retry->11:37:7 timeout, abort); at cloud.callFunction api; 
    at new u (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:251086)
    at d (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:251593)
    at f (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:251688)
    at eval (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:416134)
    at eval (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:247507)
    at Object.eval [as next] (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:247612)
    at r (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:246355)

网上找了一圈也没找到errCode 404012,在微信开发社区上找到了相关帖子,但是跟我这个也不太一样,并且最终没有解决问题。


APPID:wxe55f64e72f6db2e6

手机型号:小米9, MI 9arm64-v8a

微信版本:7.0.14


云函数

const cloud = require('wx-server-sdk')


cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})


exports.main = async (event, context) => {
  try {
    var result = await cloud.openapi.security.imgSecCheck({
      media: {
        contentType: 'image/png',
        value: Buffer.from(event.img)
      }
    })
    return result
  } catch (err) {
    return err
  }
}


调用的函数

wx.chooseImage({
                        count: 1,
                        sizeType: [ "original", "compressed" ],
                        sourceType: [ "album" ]
                    }).then(function(res) {
                        var tempFilePaths = res.tempFilePaths;
                      var tempFiles = res.tempFiles;

                        // 图片转化buffer后,调用云函数
                        wx.getFileSystemManager().readFile({
                          filePath: tempFilePaths[0],
                          success: res => {
                            console.log({ res_data: res.data});
                            wx.cloud.callFunction({
                              name: 'ContentCheck',
                              data: {
                                img: res.data
                              },
                              success(res) {
                                console.log({ res: res })
                                if (res.result.errCode == 87014) {
                                  console.log("违规了");
                                }
                                else {
                                  console.log("没有违规");
                                }
                              }
                            });
                          },
                          fail: err => {
                            reject(err);
                            console.log("fail: err");
                          }
                        });

});


在调试模式下,按照上面的代码,可以输出res_data的内容

{res_data: ArrayBuffer(50222)}


但是我尝试了十多次,大多数时候都是超时报错,有时候竟然也能正常运行。也测试了不同大小的图片,一开始小图片(30k)可以正常,后来测试了稍微大点图片(200k)就执行不下去了,再范围小图片也报错。。。

真的好迷醉。。我看文档里面写着,是不能超过1M图片大小限制:1M,但明明我上传测试的图片只有几百k,也通过不了。。

尝试了三四天了,真的要崩溃了

回答关注问题邀请回答
收藏

6 个回答

  • Choice
    Choice
    2021-04-20

    楼主最后用的什么方案,我今天也卡着了...

    2021-04-20
    有用
    回复
  • Garin
    Garin
    2020-07-24

    老哥,你问题解决了吗?我每张图片不超过100kb,一次选择4张图片进行安全检测。开发者工具没问题,实机演示,总是报错,卡在图片检测。我这是UGC类小程序,用户发布动态,都是一次好几张图片啊

    2020-07-24
    有用
    回复
  • 将计就计
    将计就计
    2020-06-16

    我也是这样,请问怎么解决的啊,开发工具上正常,真机上超级慢,132k的文件上传30s左右,求助大佬

    2020-06-16
    有用
    回复 1
    • 将计就计
      将计就计
      2020-06-16
      安卓上100多k就会出现超时,我加了个wx.compressImage压缩后就可以用了.但我看不到压缩后有多少k了
      2020-06-16
      回复
  • 发飙的蜗牛
    发飙的蜗牛
    2020-05-21

    解决了么?

    2020-05-21
    有用
    回复 5
    • Y.M. Eliiot
      Y.M. Eliiot
      2020-05-21
      我试了一下,在调用API前,把要上传审核的图片压缩一下,就能正常使用了。
      我尝试的是,压缩到150*150(单位应该是像素),就没问题了
      腾讯文档里面也不写写清楚……
      2020-05-21
      回复
    • 发飙的蜗牛
      发飙的蜗牛
      2020-05-21回复Y.M. Eliiot
      150 可能存在误判哦。我现在再改逻辑
      2020-05-21
      回复
    • 墨
      2020-06-16回复Y.M. Eliiot
      楼主,请教一下,请问您是怎么压缩的呢?
      2020-06-16
      回复
    • Y.M. Eliiot
      Y.M. Eliiot
      2020-06-21回复
      我是利用 canvas压缩图片的。具体可以度娘一下,或者参考这个
      https://www.jianshu.com/p/4e307dbdfe82
      2020-06-21
      1
      回复
    • 墨
      2020-06-22回复Y.M. Eliiot
      嗯嗯,谢谢楼主,我之后也是使用的canvas来做的
      2020-06-22
      回复
  • 老张
    老张
    2020-05-15

    看到大家都掉坑里了,心也平衡了;

    我这边是真机上精确地129k能过,130k不过。

    我们现在全部改成先wx.cloud.uploadFile再将fileID传入云函数。

    你这种方案太坑人。

    2020-05-15
    有用
    回复 3
    • Y.M. Eliiot
      Y.M. Eliiot
      2020-05-15
      「看到大家都掉坑里了,心也平衡了」我也平衡一些了哈哈哈
      但是完成不了任务,小程序无法上线还是难受啊


      我试试你的方案,谢谢
      2020-05-15
      回复
    • Choice
      Choice
      2021-04-20回复Y.M. Eliiot
      这方案哪的问题呀
      2021-04-20
      回复
    • 伍勋高
      伍勋高
      2021-10-12
      这不是还是会超出文件大小限制吗
      2021-10-12
      回复
  • 拾忆
    拾忆
    2020-05-15

    把超时时间修改长一些看看。

    https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#networkTimeout

    2020-05-15
    有用
    回复 4
    • Y.M. Eliiot
      Y.M. Eliiot
      2020-05-15
      我试了一下延长 网络请求的超时时间,最后还是有bug,只不过就是延迟出现了。。
      2020-05-15
      回复
    • 拾忆
      拾忆
      2020-05-15回复Y.M. Eliiot

      那就只能从其他方面去优化,你的运算时间太久了

      2020-05-15
      回复
    • Y.M. Eliiot
      Y.M. Eliiot
      2020-05-15
      可是我在开发者工具上测试,是可以正常使用的,而且很快就出现了结果。。。而在手机上测试,或者真机调试,却一直卡着。不过还是谢谢你的回答
      2020-05-15
      回复
    • Choice
      Choice
      2021-04-20回复Y.M. Eliiot
      楼主最后咋解决的
      2021-04-20
      回复
登录 后发表内容
问题标签