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

如何向Telegram Bot发送图片?Base64传输遇400错误求解

Telegram Bot发送Base64文件报错的解决方法

问题根源

你直接把纯Base64字符串填进document字段,Telegram API会把这个字符串当成远程文件ID或URL来解析,但Base64里的+、/等字符不符合文件ID的格式规则,所以返回400错误。

两种可行解决办法

办法1:用multipart/form-data格式上传(推荐)

Telegram Bot API优先支持表单上传文件,操作步骤如下:

  • 构造multipart/form-data类型的POST请求
  • 加入两个表单字段:
    • chat_id:目标聊天的ID
    • document:把Blob转成的二进制文件流(不用转Base64)
  • 请求地址还是https://api.telegram.org/botXXX/sendDocument

伪代码示例:

// 假设blob是你要发送的文件Blob对象
const formData = new FormData();
formData.append('chat_id', '你的聊天ID');
formData.append('document', blob, '文件名.后缀');

fetch('https://api.telegram.org/bot你的Bot令牌/sendDocument', {
  method: 'POST',
  body: formData
});

办法2:在JSON请求里用Data URI格式

如果必须用JSON发送,得给Base64字符串加上Data URI前缀,格式是:data:<文件MIME类型>;base64,<你的Base64字符串>

比如你测试的是GIF图片,修改后的请求参数如下:

{
  "chat_id": "你的聊天ID",
  "document": "data:image/gif;base64,R0lGODlhKAAoAMIAAAAAAL6+vgCYAOfn5wAA/wAAAAAAAAAAACH5BAEAAAEALAAAAAAoACgAAAPYGLrc/jDKSau9OOvNu19AKIafIxJoioplqL4vyQEwIdw1AWw0fAu52w5D+xlxNeOw0rMdjb6fztJ0PpEp6FJSDQKjqS2kNxigygQ0Do1Om6fc89tNX5vbdPhYnmKb7Xl5Yg00eHSGfipogwyFb3eQh5GPZowgkpiJmgMClgqOmZOibp1xbmWop6h+q5ylEWStkJSzq0ITsX1pWTd3fa6elzkqR1HBwsNWWFnHIMtRUi+vTNFJzysZANe8Nc0PXdLdHQDgOeQt5ObnJY3k7uvs8fLz9PX29/EJADs="
}

注意:

  • 要把<文件MIME类型>换成实际的类型,比如PDF用application/pdf,PNG图片用image/png
  • 这种方式有文件大小限制,Telegram一般允许最大50MB以内的文件(不同类型略有差异)

额外提醒

  • 确保Bot令牌里的XXX已经换成你实际的Bot令牌
  • 确认chat_id是有效的目标聊天ID,不确定的话可以调用getUpdates接口获取

内容的提问来源于stack exchange,提问作者NIKOLAY YA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:45:31