图片检查云函数imgSecCheck 踩坑指南
//小程序客户端代码
wx.chooseImage({
count:'1',
sizeType: ['compressed'],
sourceType: ['album', 'camera']
}).then((res)=>{
wx.showLoading();
let opt= {src:res.tempFilePaths[0], quality:5}
return wx.compressImage(opt);//压缩图片发送至CDN暂存
}).then((res)=>{
let cdnUrl=wx.cloud.CDN({
type: 'filePath',
filePath: res.tempFilePath,//压缩图片发送至CDN暂存
});
let opt={
name:'imgSecCheck',
data:{
imgcontent: cdnUrl
}
};
return wx.cloud.callFunction(opt) //调用云函数检查图片是否合法
}).then((res)=>{
wx.hideLoading();
if (res.result.errCode == 0) {
wx.showModal({
title: '提醒',
content: '检查成功!',
showCancel: false
})
//todo 上传图片
}else{
wx.showModal({
title: '提醒',
content: '违规图片!',
showCancel: false
})
}
}).catch((err)=>{
console.error(err);
wx.hideLoading();
if(err.errMsg!='chooseImage:fail cancel'){
wx.showModal({
title: '提醒',
content: '出错了请稍后再试!',
showCancel: true
})
}
});
//图片检查云函数定义
const cloud = require('wx-server-sdk')
const axios = require('axios');
cloud.init()
exports.main = async (event, context) => {
let buffer=null;
// 下载CDN图片进行检查
await axios({
method: 'get',
url: event.imgcontent,
responseType: 'arraybuffer'
}).then(res => {
buffer=res.data;
})
try{
return await cloud.openapi.security.imgSecCheck({
media: {
contentType: 'image/png',
value:buffer
}
})
}catch(e){
return e;
}
}