https://developers.weixin.qq.com/miniprogram/dev/framework/security.imgSecCheck.html
我有一个云函数用来检测图片内容合法性,在开发者工具上上传违禁图片能正常返回87014的errCode从而删除图片,不过在手机上预览或者真机调试的时候同一张违规图片返回的errCode一直是0。看请求日志都是调用成功的状态,所以不知道问题原因
云函数代码:
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
try {
const result = await cloud.openapi.security.imgSecCheck({
media:{
contentType:event.media.contentType,
value:Buffer.from(event.media.buffer,event.media.encode)// Buffer.from()是必须的
}
})
// result 结构
// { errCode: 0, errMsg: 'openapi.templateMessage.send:ok' }
return result
} catch (err) {
// 错误处理
// err.errCode !== 0
return err
}
}
调用方式
async imageCheck(tempImagePath, callback) {
//-------------
let _this = this;
let tempFilePathCompressed = tempImagePath;
console.log("------ image to check ",tempFilePathCompressed)
wx.getFileSystemManager().readFile({
filePath: tempFilePathCompressed, // 压缩图片,然后安全检测
encoding: 'base64',
success: buffer => {
uni.showLoading({
title: '加载中...'
});
//这里是 云函数调用方法
wx.cloud.callFunction({
name: 'image_check', // 这里是咱们创建的云函数名称
data: {
media: {
contentType: 'image/jpeg',
buffer: wx.base64ToArrayBuffer(buffer.data),
encode: "base64"
}
},
complete(res) {
console.log("---- buffer:"+ buffer.data.byteLength);
console.log(res)
uni.hideLoading();
if (res.result.errCode == 0) { // 如果图片代码返回87014说明此图片是有问题的
_this.validPicNum +=1
callback(tempImagePath); // 这里我调用了一个裁剪图片的代码,就不贴出来了, 你可以将此方法的内容转移到chooseImage方法中,而不需裁剪图片
} else {
const num = _this.filePathsList.findIndex(v => v.url === tempImagePath);
_this.filePathsList.splice(num, 1);
return uni.showToast({
title: "违规图片已删除",
});
}
}
})
}
})
return
}
换一张很小的图片测试一下。