node.js - HTTPS 模块中内置 NodeJS 的 Multipart/form-data 发布请求
问题描述
我需要使用 Node 的内置 HTTPS 模块将文件上传到 API。我当前对 API 的请求功能是为“应用程序/json”请求设计的。文档给出的上传文件的说明是:
使用 multipart/form-data 以通常通过浏览器上传文件的方式发布文件。照片最大 10 MB,其他文件最大 50 MB。
我的问题是我不知道如何提出这样的请求,我可以找到任何关于如何使用节点内置的 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();
}
解决方案
推荐阅读
- delphi - Delphi 和 Indy TIdFTP:将服务器上一个文件夹中的所有文件复制到另一个文件夹
- apache-spark - 如何从 udf 访问广播变量,广播变量在另一个调用该 udf 的类中定义
- python-3.8 - 调用具有“self”参数的 Falcon 资源响应程序时,“缺少 1 个必需的位置参数:'resp'”
- java - Listview.setOnItemclicklistener 与 Searchview
- python - 如何让python在字符串之后读取一个值,然后比较并输出该值?
- r - 创建带有描述性的 data.frame
- python - 组合它们后moviepy破坏视频
- cloud-foundry - 删除特定空间中的所有应用和服务
- java - 如何自定义 XYPlot 属性 - 添加 X 和 Y 轴标签并更改图例文本大小?
- maven - 如何为 devops 管道部署我的 Maven 项目