Составной запрос Post данных / form-data с NodeJS, встроенным в модуль HTTPS

#node.js #http #https #telegram #multipart

#node.js #http #https #telegram #составной

Вопрос:

Мне нужно загрузить файл в API с помощью Node, встроенного в HTTPS-модуль. Моя текущая функция для запроса к API предназначена для запросов «application / json». Инструкции по загрузке файла, приведенные в документах, являются:

Отправьте файл, используя составные / форм-данные, обычным способом, которым файлы загружаются через браузер. максимальный размер фотографий — 10 МБ, других файлов — 50 МБ.

Моя проблема здесь в том, что я понятия не имею, как сделать такой запрос, и я мог бы найти что-нибудь о том, как это сделать с помощью встроенных в HTTP / HTTPS модулей узла.

 execute(method, params = {}, callback = (res) => {}) {
    let ret = "";
    let options = {
      protocol: "https:",
      hostname: "api.telegram.org",
      port: 443,
      headers: {"Content-Type": "application/json", "Connection":"keep-alive"}, //"Content-Type":"multipart/form-data"
      path: "/bot" this.token "/" method,
      method: "POST"
    };

    let req = this.https.request(options, (res) => {
      res.setEncoding("utf8");

      //Data Stream
      res.on("data", (chunk) => {
        ret  = chunk;
        if (res.statusCode != 200) {
          console.error("Something went wrong while connecting to the Telegram API!n>Status Code: "   res.statusCode   "n>URL: "   options.hostname   options.path   "n>Params: "   JSON.stringify(params)   "n>Response: "   chunk   "n");
        }
      });

      res.on("error", (err) => {
        console.error(e);
        return;
      });

      //Executes callback after closing the data stream
      res.on("end", () => {
        try {
          ret = JSON.parse(ret).result;
        } catch (e) {
          console.error("Couldn't parse request results!n>"   e);
          return;
        } finally {
          try {
            callback(ret, params);
          } catch (callbackE) {
            console.error("Error in callback!n>"   callbackE);
          }
        }
      });
    });

    //Adds parameters
    req.write("" JSON.stringify(params));
    req.end();
  }