慕田峪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);
添加回答
舉報
0/150
提交
取消