微信小程序内容校验
2019-10-09 本文已影响0人
空口言_1d2e
if platform == "微信小程序":
access_token = get_access_token(app_id, secret)
if access_token == None:
return jsonify({
'code': 500,
'warning': "access_token获取失败"
})
data = '{"content": "' + feedback_content + '"}'
headers = {'Content-Type': 'application/json'}
url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token=' + access_token
response = requests.post(url, data=data.encode('utf-8'), headers=headers)
current_app.logger.error("微信小程序内容安全检测{}".format(response.text))
if json.loads(response.text)["errcode"] == 87014:
return jsonify({
'code': 87014,
'warning': "内容含有违法违规内容"
})
易犯错误:
使用post方法的json参数,会使请求中的content为unicode编码。
而通过手动拼接字符串和设置headers的方式,方可保证request的body是正确的。
另外使用json.dumps也不行哦。一定要拼接字符串。
新增
image.pngimage.png
图片校验
quality = 100
ppi = 300
for i in files:
FormData = base64.b64decode(i[0])
pic_name = i[1]
bar_buffer = io.BytesIO(FormData)
im = Image.open(bar_buffer)
if im.size[0] > 3000 or im.size[1] > 3000:
im = im.resize((int(im.size[0] * 0.3),
int(im.size[1] * 0.3)),
resample=Image.ANTIALIAS)
elif im.size[0] > 2000 or im.size[1] > 2000:
im = im.resize((int(im.size[0] * 0.5),
int(im.size[1] * 0.5)),
resample=Image.ANTIALIAS)
elif im.size[0] > 1000 or im.size[1] > 1000:
im = im.resize((int(im.size[0] * 0.7),
int(im.size[1] * 0.7)),
resample=Image.ANTIALIAS)
bar_buffer_one = io.BytesIO()
im.save(
bar_buffer_one,
dpi=(ppi, ppi),
quality=quality,
format='JPEG'
)
the_bytes = bar_buffer_one.getvalue()
f_size = sys.getsizeof(the_bytes)
# current_app.logger.error("微信小程序图片首次缩放占用内存{}".format(f_size))
if 1024 * 1024:
while f_size > 1024 * 1024:
quality -= 3
print(quality)
buffer = io.BytesIO()
im.save(
buffer,
dpi=(
ppi,
ppi),
quality=quality,
format='JPEG')
the_bytes = buffer.getvalue()
f_size_one = sys.getsizeof(the_bytes)
# current_app.logger.error("微信小程序图片二次缩放占用内存{}".format(f_size_one))
print(f_size_one)
m = MultipartEncoder(
fields={
'media': (pic_name, the_bytes, "application/octet-stream")
})
url_img = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=' + access_token
r = requests.post(url_img, data=m, headers={'Content-Type': m.content_type})
# current_app.logger.error("微信小程序图片安全检测{}".format(r.text))
if json.loads(r.text)["errcode"] == 87014:
return jsonify({
'code': 87014,
'warning': "图片含有违法违规内容"
})