iapp上传图片到腾讯云函数
原理
原理:使用iapp对图片进行Base64编码然后上传到腾讯云API网关触发云函数事件
iapp对图片进行base64处理
原理:使用httpbin.org对图片数据进行处理
iapp事件代码
代码语言:javascript复制t()
{
s api = "http://httpbin.org/post"
// 因为huf函数使用post请求所以要使用httpbin post链接
s file = "/storage/emulated/0/Pictures/WeiXin/1.jpg"
// 图片本地地址 如无法上传 使用%代替/storage/emulated/0/
s type = "utf-8"
// 编码
huf(api, "" , file, type, e)
syso(e)
}
返回结果
代码语言:javascript复制{
"args": {},
"data": "",
"files": {
"file": "data:image/jpeg;base64,图片数据"
},
"form": {},
"headers": {
"Accept-Encoding": "gzip",
"Charset": "utf-8",
"Content-Length": "121",
"Content-Type": "multipart/form-data;boundary=******",
"Host": "httpbin.org",
"User-Agent": "",
"X-Amzn-Trace-Id": "Root=1-6191e183-110116c866c95ea842fa6c2a"
},
"json": null,
"origin": "IP地址",
"url": "http://httpbin.org/post"
}
云函数接收数据
进入控制台新建云函数
选择python3.6
创建API网关触发
注意要不要勾选集成响应 否则下面的代码运行后会显示错误
云函数Python处理图片代码
这里的return没有使用集成响应的格式,如果勾选了集成响应会显示错误,集成响应的格式在官方文档的云函数API网关触发可以看到。
代码语言:javascript复制# -*- coding: utf8 -*-
import json
def main_handler(event, context):
# 处理传入的数据
try:
body = event['body']
data = json.loads(body)
file = data['files']['file'] #文件
except:
return {
"code":500,
"msg":"文件为空"
}
# 判断是否图片base64数据
try:
img = re.sub(r'data:image/(jpeg|png|gif);base64,','',file)#去除文件类型
except:
return {
"code":501,
"msg":"这不是一张图片"
}
# 写入到图片
try:
imgdata = base64.b64decode(img)
file_path = '/tmp/test.jpg'
fo = open(file_path,'wb')
fo.write(imgdata)
fo.close()
# 图片保存成功 云函数可以操作/tmp目录
# 这里执行你的逻辑
except:
return {
"code":502,
"msg":"服务器保存图片错误"
}
获取API网关访问路径
iapp上传httpbin的回调数据到云函数
代码语言:javascript复制t()
{
s api = "http://httpbin.org/post"
s tapi ="https://iapi.1ove.icu/release/i-up-up"
//api网关的地址(这是我的写的图床接口,大家可以使用)
s file = "/storage/emulated/0/Pictures/WeiXin/1.jpg"
//上传的文件
s type = "utf-8"
//上传到httpbin 传入 参数e
huf(api, "" , file, type, e)
//上传 参数e 到云函数
hs(tapi,e,type,ee)
//ee 结果
}
源码
下载