#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();
}