小编Ear*_*dil的帖子

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

我有一个字符串想要通过电报机器人发送,但不是作为消息(它相当长)而是作为文件发送。但是,我在创建此文件并将其上传到 Telegram 时遇到一些问题(因为我需要使用 API 文档https://core.telegram.org/bots/api#sending-files中指定的 multipart/form-data 来发布文件)。受/sf/answers/1600124011/的启发,我尝试了以下方法:

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);
Run Code Online (Sandbox Code Playgroud)

但我只得到一个一般错误,POST https://api.telegram.org/bot<token>/sendDocument 400 (Bad Request) 我从未使用过 XMLHttpRequest,所以我可能搞乱了它的用法,但我找不到任何解决方案。欢迎使用替代方案(可能使用纯 js)。

javascript post telegram telegram-bot

6
推荐指数
1
解决办法
6914
查看次数

C:变量变为0,只需在for循环中调用getline

在下面的代码(我的源代码的简化版本)中,在声明时lv初始化为1右的变量,getlinefor循环内部调用时神秘地变为0 .printf如果您输入任何内容"cl",或者通过gdb,您可能会注意到它.变量在getline调用后立即更改值.最奇怪的是,当"cl"提示输入时,你可以通过gdb看到之后lv转向的值,然后在语句中正确设置,然后保存用于后续循环,无论你输入什么.0getline3if

此外,如果您将声明更改为static int lv = 1;然后预期的行为会出现(lv保持到1"手动"更改).

有人可以告诉我到底是怎么回事?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ( void ) {
  char* line=NULL;
  int len;
  int lv = 1;
  for(;;) { 
    printf("Level: %d\n", lv);

    getline(&line, (size_t*)&len, stdin);

    if (line[strlen(line) - 1] == '\n') {
      line[strlen(line) - 1] = '\0';
    }
    if (strcmp(line, "cl")==0) …
Run Code Online (Sandbox Code Playgroud)

c variables static for-loop getline

-1
推荐指数
1
解决办法
74
查看次数

标签 统计

c ×1

for-loop ×1

getline ×1

javascript ×1

post ×1

static ×1

telegram ×1

telegram-bot ×1

variables ×1