<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      小程序圖片安全檢查

      借助臨時CDN傳遞大數據到云函數實現圖片安全檢測

      最近在重構小程序戀愛小清單,在用云函數做圖片的安全檢測時報了一個錯:cloud.callFunction:fail Error: data exceed max size

      也就是圖片超過了大小限制。

      早期的版本是通過畫布將圖片縮小(wx.canvasToTempFilePath),接著讀取文件流(wx.getFileSystemManager().readFile),然后再提交云函數檢測,過程感覺有些繁瑣復雜

      最近發現其實有更簡單的方法,可以借助臨時的CDN,傳遞大數據,最終在云函數端會收到一個CDN地址,接著通過request-promise讀取文件流,然后再做安全檢測,相比舊版的方法個人感覺簡單清爽不少。

      參考官方文檔:

      https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/utils/Cloud.CDN.html

       

      代碼如下:

      小程序端:

      const api = require("api.js");
      
      /**
       * 圖片安全檢測
       * 借助臨時CDN傳遞大數據
       * @param filePath 圖片的臨時文件路徑 (本地路徑)
       * @returns {Promise<unknown>}
       */
      const imgSecCheckViaCDN = (filePath) => {
          return new Promise(function (resolve, reject) {
              api.callCloudFunction("securityCheck", {
                  type: "imgSecCheckViaCDN",
                  imgData: wx.cloud.CDN({
                      type: "filePath",
                      filePath,
                  })
              }, res => {
                  console.log("圖片安全檢測結果:", JSON.stringify(res));
                  const result = res.result;
                  if (result.success) {
                      resolve(result);
                  } else {
                      reject(result);
                  }
              }, reject);
          });
      }
      

       

      api.js

      /**
       * 云函數調用
       * @param name
       * @param data
       * @param success
       * @param fail
       * @param complete
       */
      const callCloudFunction = function (name, data, success, fail, complete) {
          //執行云函數
          wx.cloud.callFunction({
              // 云函數名稱
              name: name,
              // 傳給云函數的參數
              data: Object.assign({}, data, {env: env.activeEnv})
          }).then(res => {
              typeof success == 'function' && success(res);
          }).catch(res => {
              typeof fail == 'function' && fail(res);
          }).then(res => {
              typeof complete == 'function' && complete(res);
          });
      };
      
      module.exports = {callCloudFunction}
      

       

      云函數端:

      // 云函數入口文件
      const cloud = require('wx-server-sdk');
      const responce = require('easy-responce');
      const requestHelper = require('./utils/requestHelper');
      
      const headers = {
          encoding: null,
          headers: {
              "content-type": "application/octet-stream",
              // "content-type": "video/mpeg4",
          },
      };
      
      // 云函數入口函數
      exports.main = async (event, context) => {
          cloud.init({
              env: event.env
          });
          let result = {};
          try {
              const {type, content, imgData} = event;
              let {buffer} = event;
              console.log("檢測類型:", type, "文本內容:", content, "圖片內容:", imgData);
              switch (type) {
                  case "imgSecCheckViaCDN":
                      const imageResponse = await requestHelper.request(imgData, headers, {});
                      buffer = imageResponse.body;
                  case "imgSecCheck":
                      result = await cloud.openapi.security.imgSecCheck({
                          media: {
                              contentType: 'image/png',
                              // value: Buffer.from(imgBase64, "base64")
                              value: Buffer.from(buffer)
                          }
                      });
                      break;
                  case "msgSecCheck":
                      result = await cloud.openapi.security.msgSecCheck({content});
                      break;
                  default:
                      console.log("不支持的檢測類型:", type);
                      break;
              }
          } catch (e) {
              console.error(e);
              result = e;
          }
          console.log("檢測結果:", result);
          const {errCode, errMsg} = result;
          return errCode !== 87014 ? responce.success({errCode}) : responce.fail(errMsg);
      };
      

       

      requestHelper.js

      const rp = require('request-promise');
      
      /**
       * http請求
       * @param url
       * @param options
       * @param data
       * @param autoFollowRedirect
       * @returns {Promise<unknown>}
       */
      const request = function (url, options, data, autoFollowRedirect = true) {
          return new Promise(function (resolve, reject) {
              const p = Object.assign({
                  json: true,
                  resolveWithFullResponse: true,
                  followRedirect: autoFollowRedirect
              }, options, data, {url});
              console.log("請求參數:", JSON.stringify(p));
              return rp(p)
                  .then(async function (repos) {
                      //console.log("獲取到最終內容,執行回調函數:", repos);
                      return resolve(repos);
                  })
                  .catch(async function (err) {
                      if (err && (err.statusCode === 301 || err.statusCode === 302)) {
                          // console.log("停止重定向,重定向信息:", err);
                          console.log("停止重定向");
                          return resolve(err);
                      }
                      console.error("重定向失敗:", err);
                      return reject(err);
                  });
          });
      
      }
      
      module.exports = {request }
      posted @ 2022-10-27 09:45  wx_xfy6369  閱讀(205)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 影音先锋女人AA鲁色资源| 亚洲国产亚洲国产路线久久| 一区二区三区四区亚洲自拍| 老师扒下内裤让我爽了一夜| 国产第一页屁屁影院| 亚洲第一无码AV无码专区| 精品国产一区二区三区性色| 蜜桃视频在线观看网站免费| 精选国产av精选一区二区三区| 国产成人精品性色av麻豆| 亚洲小说乱欧美另类| 丰满熟女人妻一区二区三| 人妻夜夜爽天天爽三区麻豆av | 亚洲熟妇自偷自拍另亚洲| 国产精品中文字幕观看| 亚洲精品一区二区三区中文字幕| 九九热视频在线观看一区| 欧美性群另类交| 亚洲精品久久久久成人2007 | 日韩有码中文字幕av| 色综合久久久久综合体桃花网| 1精品啪国产在线观看免费牛牛 | 午夜男女爽爽影院在线| 二区三区亚洲精品国产| 人妻少妇精品系列| 深夜福利啪啪片| 国产欧美日韩免费看AⅤ视频| 国产精品国产精品偷麻豆| 欧美乱强伦xxxx孕妇| 国产精品成人网址在线观看 | 国产一区日韩二区三区| 国产福利永久在线视频无毒不卡 | 亚洲高清国产拍精品熟女| 亚洲精品欧美综合二区| 熟女少妇精品一区二区| 天堂av最新版中文在线| 亚洲人成色7777在线观看不卡 | 无套内谢极品少妇视频| 国产成人无码一区二区三区在线| 日本乱码在线看亚洲乱码| 日本深夜福利在线观看|