为了账号安全,请及时绑定邮箱和手机立即绑定

通过电报机器人上传和发送字符串作为文件

通过电报机器人上传和发送字符串作为文件

慕田峪7331174 2021-06-02 15:11:51
我有一个字符串,我想通过电报机器人发送,但不是作为消息(它很长)而是作为文件发送。但是,我在创建此文件并将其上传到 Telegram 时遇到了一些问题(因为我需要使用 API 文档https://core.telegram.org/bots/api#sending-files 中指定的 multipart/form-data 发布文件)。受https://stackoverflow.com/a/22858914/4869973 的启发,我尝试了以下操作:var file = new Blob([enc_data], {type: 'text/plain'});var formData = new FormData();formData.append('chat_id', '<id>');formData.append('document', file);var request = new XMLHttpRequest();request.open('POST', 'https://api.telegram.org/bot<token>/sendDocument');request.send(FormData);但我只得到一个通用错误POST https://api.telegram.org/bot<token>/sendDocument 400 (Bad Request) 我从未使用过 XMLHttpRequest 所以我可能搞砸了它的使用,但我找不到任何解决方案。欢迎使用替代方案(可能使用纯 js)。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

你的变量命名是错误的。您将 formdata 命名为 as formData,然后在发送请求时将其命名为FormData。


复制并粘贴此代码,它应该可以工作。我测试了它,它确实如此。确保用有效的替换 chat_id 和令牌,否则它将不起作用。


var chat_id = 3934859345; // replace with yours

var enc_data = "This is my default text";

var token = "45390534dfsdlkjfshldfjsh28453945sdnfnsldfj427956345"; // from botfather


var blob = new Blob([enc_data], { type: 'plain/text' });


var formData = new FormData();

formData.append('chat_id', chat_id);

formData.append('document', blob, 'document.txt');


var request = new XMLHttpRequest();

request.open('POST', `https://api.telegram.org/bot${token}/sendDocument`);

request.send(formData);


查看完整回答
反对 回复 2021-06-03
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信