You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:48:29