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

恩地尔

我有一个要通过电报机器人发送的字符串,但不是作为消息(很长)而是作为文件发送。但是我在创建此文件并将其上传到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)。

最好的

您的变量命名错误。您将formdata命名为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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章