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

如何不使用discord.js将base64格式图片数据提交到Discord webhook

Discord Webhook 提交Base64图片的正确实现方式

核心前提说明

Discord Webhook 不支持直接在JSON格式的请求体中提交Base64图片数据,无论是embed字段的图片地址还是其他payload属性,都无法直接识别Base64字符串,必须通过multipart/form-data格式的请求提交二进制图片文件。

1. 请求基础要求

  • 请求方法必须使用POST
  • 请求头的Content-Type必须设置为multipart/form-data,不可使用application/json
  • 你持有的Base64图片数据需要先解码为二进制的Buffer/Blob格式,不可直接提交Base64字符串

2. 完整请求结构说明

multipart表单需要包含两个必填字段:

  • 第一个字段名为payload_json,值为JSON格式的Webhook配置,示例如下:
{
  "content": "自定义的附带文本内容",
  "embeds": [
    {
      "title": "嵌入消息标题",
      "description": "嵌入消息描述",
      "image": {
        "url": "attachment://custom_image.png"
      }
    }
  ]
}

注意:embed中图片的url需要使用attachment://[文件名]格式,文件名必须和后续上传的文件字段的文件名完全对应

  • 第二个字段名为files[0],值为解码后的图片二进制数据,同时指定文件名为custom_image.png(文件名后缀需要和图片实际格式匹配)

3. 错误写法问题说明

直接将Base64字符串填入embed的image.url字段的写法不符合接口规则,Discord仅会识别公网可访问的HTTP/HTTPS链接,或者attachment协议的本地附件引用,不会解析Base64编码内容。

补充:Base64转二进制的常用实现

  • Node.js 环境:const imageBuffer = Buffer.from(你的Base64字符串.replace(/^data:image\/\w+;base64,/, ''), 'base64')
  • 浏览器/前端环境:给Base64字符串补全data URI前缀后,通过fetchAPI转为Blob对象即可使用

内容的提问来源于stack exchange,提问作者Joe Martella

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:03