如何通过Slack Webhook URL发送Base64编码图片?
解决方法:通过Slack Webhook发送Base64编码图片
Slack的Incoming Webhook不支持直接使用data:image/png;base64,...格式的data URI作为image_url字段的值,这是你之前代码失败的核心原因。要发送Base64图片,需要将其解码为二进制数据,再通过multipart/form-data格式上传,具体实现如下:
可行代码示例
import requests import base64 import io slack_webhook_url = "<你的Webhook URL>" message = "<测试消息>" base64_str = "<你的Base64编码字符串(需去掉'data:image/png;base64,'前缀)>" # 处理Base64字符串:如果带前缀则拆分去掉 if "data:image/png;base64," in base64_str: base64_str = base64_str.split(',')[1] # 解码Base64为二进制数据流 image_data = base64.b64decode(base64_str) image_file = io.BytesIO(image_data) # 构造请求参数 payload = { "payload": '{"text": "' + message + '"}' } files = { "file": ("image.png", image_file, "image/png") } # 发送请求 response = requests.post(slack_webhook_url, data=payload, files=files) if response.status_code == 200: print("Slack通知发送成功") else: print(f"Slack通知发送失败,状态码: {response.status_code}")
关键细节说明
- 必须剥离Base64字符串中的
data:image/png;base64,前缀,否则解码会失败。 - 使用
io.BytesIO可以避免将图片写入本地磁盘,直接在内存中处理二进制数据。 - 通过
multipart/form-data格式上传时,payload需以JSON字符串形式传递,同时通过files参数传入图片数据流。 - 若需给图片添加附加说明,可修改
payload中的JSON内容,比如加入attachments字段补充描述。
内容的提问来源于stack exchange,提问作者Anandu BS
相关产品推荐
相关产品推荐

