图片内容安全检测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,也通过不了。。 尝试了三四天了,真的要崩溃了