Мне нужно загрузить файл в API со встроенным HTTPS-модулем Node. Моя текущая функция для запроса к API предназначена для запросов "application / json". Инструкции по загрузке файла, заданные docs :
Разместите файл, используя multipart / form-data обычным способом, который файлы загружаются через браузер. Максимальный размер 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();
}