收藏
回答

云开发 security.imgSecCheck 调用响应错误

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 工具 wx1c57ae3ef6a5a57c 2.2.5

使用云函数调用 security.imgSecCheck ,对图片进行鉴黄请求响应为:

{

errMsg: "cloud.callFunction:ok",

result:{
      errCode: 41005

     errMsg: "openapi.security.imgSecCheck:fail media data missing hint: [9ZGoCA02628622]"

   }

}


云函数代码如下:

const cloud = require('wx-server-sdk')
 
cloud.init();
 
// 云函数入口函数
exports.main = (event) => {
  console.log(event);
  return cloud.openapi.security
    .imgSecCheck({
      media: {
        contentType: 'image/png',
        value: event.img
      }
    })
    .then(result => {
      return result;
    })
    .catch(err => {
      return err;
    })
}


调用代码如下:

uploadImg: function() {
    this.selectImg().then(img => {
      console.log(img);
      return this.imgSecCheck(img);
    }).then(res => {
      console.log("success:", res);
    }).catch(err => {
      console.log("fail", err);
    })
  },
 

 

// 选择图片并转为 buffer

  selectImg: function() {
    return new Promise((resolve, reject) => {
      wx.chooseImage({
        count: 1,
        sizeType: ['original', 'compressed'],
        success: function(res) {
          let params = {
            filePath: res.tempFilePaths[0]
          };
          wx.getFileSystemManager()
            .readFile({
              filePath: res.tempFilePaths[0],
              success: res => {
                console.log("readSuccess:", res);
                resolve(res.data);
              },
              fail: err => {
                console.log("readFail:", err);
                reject(err);
              }
            });
 
        },
      })
    })
  },
 
  // 调用云函数
  imgSecCheck: function(img) {
    return wx.cloud.callFunction({
      name: "imgSecCheck",
      data: {
        img: img
      }
    })
  },


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

11 个回答

  • wiky
    wiky
    2019-09-25
    media: {
            contentType:'image/png',
            value: event.img
          }

    value: event.img 改成: value: Buffer.from(event.img)

    说实话,官方文档有点水


    2019-09-25
    有用 7
    回复
  • z🐶&a=1
    z🐶&a=1
    2019-10-09

    value: event.img 改: value: Buffer.from(event.img)

    2019-10-09
    有用 1
    回复
  • Iceberg
    Iceberg
    2020-04-17

    在官方文档基础上,以下自用代码正常:

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    cloud.init()
    // 云函数入口函数
    exports.main = async (event, context) => {
      return  cloud.openapi.security.imgSecCheck({
        media: {
          contentType: 'image/png',
          value: Buffer.from(event.buffer)
        }
      })
    }
    

    小程序客户端:

      addPic: function () {
        wx.chooseImage({
          count1,
          sizeType: ['compressed'],
          sourceType: ['album''camera'],
          success: res => {
            const filePath = res.tempFilePaths[0];
            if (filePath && filePath.size > 1024 * 1024) {
              wx.showToast({
                title'图片不能大于1M',
                icon'none'
              })
              return;
            }
            wx.getFileSystemManager().readFile({
              filePath: res.tempFilePaths[0],
              success: buffer => {
                wx.showLoading({
                  title'图片检测中',
                })
                wx.cloud.callFunction({
                  name'imgSecCheck',
                  data: {
                    buffer: buffer.data
                  }
                }).then(res => {
                  if (res.result.errCode == 0) {
                    this.doUpload(filePath);
                  }
                }).catch(err => {
                  wx.hideLoading();
                  wx.showToast({
                    title"图片含有违规内容",
                    icon"none",
                    duration3000
                  });
                })
              }
            })
          }
        })
      },
    
    2020-04-17
    有用
    回复
  • Andy Choi
    Andy Choi
    2020-02-23

    以上代码看明白了,谢谢。

    然后我再去文档中的security.imgSecCheck时,要在config.json要进行配置(如当前云函数文件没有config.json,可以自己新建一个),详情点这个链接(https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html#%E4%BA%91%E8%B0%83%E7%94%A8

    {
      "permissions": {
        "openapi": [
          "security.imgSecCheck"
        ]
      }
    }
    

     在云函数中使用云调用时,首先云函数中需要使用版本号至少 0.4.0 的 wx-server-sdk,建议 wx-server-sdk 始终保持最新,保证云函数目录下的 package.json 的 wx-server-sdk 字段为 latest,如本地安装依赖,请执行 npm install --save wx-server-sdk@latest。

    最后把云函数进行上传,结果执行成功,返回以下内容:

    success: 
    {errMsg: "cloud.callFunction:ok", result: {…}, requestID: "..."}
    errMsg"cloud.callFunction:ok"
    requestID"..."
    result:
    errCode0
    errMsg"openapi.security.imgSecCheck:ok"
    
    




    2020-02-23
    有用
    回复
  • 天天修改
    天天修改
    2019-10-01

    哦,终于看到一篇有用的小程序流文件处理的好文章

    2019-10-01
    有用
    回复
  • 奶嘴
    奶嘴
    2019-08-20

    我也遇到这个问题了, 云端看日志输出, buffer是传上去了, 但是,也提示上面的这个问题。

    2019-08-20
    有用
    回复 1
    • 無遠侯
      無遠侯
      2019-09-24
      我怀疑腾讯的文档有瑕疵,省略或写错了关键点
      2019-09-24
      回复
  • 2019-08-20

    问题还没解决,目前改用后台调用图片检测接口。

    2019-08-20
    有用
    回复 2
  • AGjose
    AGjose
    2019-08-20

    相同的问题,请问楼主解决了吗


    2019-08-20
    有用
    回复
  • 蝈蝈
    蝈蝈
    2019-07-25

    代码很清晰,我也跟楼主发现了一样的问题,请问楼主如何解决的

    2019-07-25
    有用
    回复
  • Aか潘   💯
    Aか潘 💯
    2019-07-20

    楼主问题解决了没,我也是同样的问题,能看看你请求的代码码

    2019-07-20
    有用
    回复

正在加载...

登录 后发表内容