精易论坛

标题: QQ频道api接口multipart/form-data如何上传图片 [打印本页]

作者: b1067519395    时间: 2023-6-27 19:54
标题: QQ频道api接口multipart/form-data如何上传图片
[HTML] 纯文本查看 复制代码
------WebKitFormBoundaryYTwvlk5brGmyD3Mn
Content-Disposition: form-data; name="content"

2
------WebKitFormBoundaryYTwvlk5brGmyD3Mn
Content-Disposition: form-data; name="msg_id"

[msg_id]
------WebKitFormBoundaryYTwvlk5brGmyD3Mn
Content-Disposition: form-data; name="file_image"; filename="文件名"
Content-Type: image/png

路径
------WebKitFormBoundaryYTwvlk5brGmyD3Mn--


  
路径 = “D:\迁移桌面\e源码\ba机qi人插件\kumiao\SDK\调试模块\qq频道\1.png”
文件名 = 取文本右边 (路径, 取文本长度 (路径)倒找文本 (路径, “\”, , ))
数据 = 到字节集 ( #QQ频道文本混合消息 )
数据 = 子字节集替换 (数据, 到字节集 (“文件名”), 到字节集 (文件名), , )
数据 = 子字节集替换 (数据, 到字节集 (“路径”), 读入文件 (路径), , )
数据 = 子字节集替换 (数据, 到字节集 (“[msg_id]”), 到字节集 (被动消息ID), , )
api.置输出日志 (到文本 (数据), )
ADD_协议头.添加 (“Authorization”, “Bot ” + QQ频道BotAppID + “.” + QQ频道BotToken)
ADD_协议头.添加 (“Content-Type”, “multipart/form-data; boundary=------WebKitFormBoundaryYTwvlk5brGmyD3Mn”, )
ADD_协议头.添加 (“User-Agent”, “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0”)
局_提交协议头 = ADD_协议头.获取协议头数据 ()
局_结果 = 网页_访问_对象 (局_网址, 局_方式, , , , 局_提交协议头, , , 真, 数据, , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))



https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html

一直返回400BadRequest
是哪里写的问题还是另有玄机,请各路大神点拨一下。


作者: b1067519395    时间: 2023-6-27 19:54
试了试把图片去掉还是报400错误
作者: 熬夜    时间: 2023-6-27 21:48


作者: b1067519395    时间: 2023-6-27 22:05
熬夜 发表于 2023-6-27 21:48

那个是url链接,下面那个才是是上传图片字节集的专有参数
作者: b1067519395    时间: 2023-6-27 22:06
熬夜 发表于 2023-6-27 21:48

需要用multipart/form-data直接上传字节集图片而不是用url链接,因为后期还有别的地方需要上传
作者: b1067519395    时间: 2023-6-27 22:37
已经自行解决,感谢论坛朋友的例子,链接如下:
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14746783
作者: b1067519395    时间: 2023-6-27 22:41
代码如下
  
如果 (是否私信)
局_网址 = https://api.sgroup.qq.com/dms/ + 子频道ID + “/messages”
局_网址 = https://api.sgroup.qq.com/channels/ + 子频道ID + “/messages”

' 局_提交数据 = 文本_替换 (#QQ频道文本混合消息, , , , “[image]”, 图片地址, “[msg_id]”, 被动消息ID, , , , , , )
局_方式 = 1
' api.置输出日志 (局_提交数据, )
路径 = “D:\迁移桌面\e源码\ba机qi人插件\kumiao\SDK\调试模块\qq频道\1.png”
文件名 = 取文本右边 (路径, 取文本长度 (路径)倒找文本 (路径, “\”, , ))
分隔符 = 取重复文本 (4, “-”)“WebKitFormBoundary”文本_取随机字符 (16, 位或 (1, 2, 4))
' 数据 = 到字节集 (#QQ频道文本混合消息)
' 数据 = 子字节集替换 (数据, 到字节集 (“文件名”), 到字节集 (文件名), , )
' 数据 = 子字节集替换 (数据, 到字节集 (“路径”), 读入文件 (路径), , )
' 数据 = 子字节集替换 (数据, 到字节集 (“[msg_id]”), 到字节集 (被动消息ID), , )
图片数据 = 读入文件 (路径)
ADD_协议头.添加 (“Authorization”, “Bot ” + QQ频道BotAppID + “.” + QQ频道BotToken)
ADD_协议头.添加 (“Content-Type”, “multipart/form-data; boundary=” + 分隔符, )
ADD_协议头.添加 (“Content-Length”, 到文本 (取字节集长度 (图片数据)), )
ADD_协议头.添加 (“accept”, “application/json”, )
ADD_协议头.添加 (“User-Agent”, “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0”, )
' headers0.置值 (“Content-Length”, 到文本 (取字节集长度 (图片数据)))
' headers0.置值 (“accept”, “application/json”)
局_提交协议头 = ADD_协议头.获取协议头数据 ()
posta.置值 (“msg_id”, 到字节集 (被动消息ID))
posta.置值 (“msg_id”, 到字节集 (被动消息ID))
posta.添加 (“file_image”, 图片数据, “image/png”, 文件名)
postb = posta.获取Post数据 (分隔符, 2)
局_结果 = 网页_访问_对象 (局_网址, 局_方式, , , , 局_提交协议头, , , 真, postb, , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
api.置输出日志 (到文本 (postb), )
api.置输出日志 (局_返回, )
返回 (局_返回)

补充内容 (2023-6-27 22:41):
亲测可以正常使用
作者: 华师大    时间: 2023-8-19 14:45
b1067519395 发表于 2023-6-27 22:41
代码如下
[e=1].版本 2

没用呢没用呢
没用呢
没用呢
没用呢
没用呢


作者: 花里胡哨之胡哨    时间: 2025-5-17 13:49
支持开源~!感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4