node.js - 在 http-request 节点中发送文件的 Node-Red 不起作用
问题描述
我正在尝试使用 http-request 节点发送文件,但它不工作。
在请求正文节点中,我添加了以下代码。
const inputFile = msg.payload;
const dataJson =
{
'name': 'testName',
'description':'testdescription',
'inputfile': inputFile
};
msg.payload = dataJson;
msg.url = 'myAPIurl';
msg.headers = {
'authorization': 'Bearer TOKEN Here',
'cookie': 'Cookie here',
'content-type': 'multipart/form-data;'
};
return msg;
这给出了错误的请求错误。
在Read File
节点中,我尝试选择这两个选项A single UTF8-String
,a single Buffer Object
但仍然出现相同的错误
但我尝试使用请求模块调用函数节点内的 API。它给出了正确的回应。
const request = global.get("request");
const fs = global.get("fs");
const url = 'API';
const tkn = 'TOken Here';
const cookie = 'cookie here';
const fl = fs.createReadStream('/tmp/node-red/app/data/filename.txt');
var options = {
method: 'POST',
url: url,
headers: {
'Authorization': tkn,
'Cookie': cookie,
},
formData: {
"name": "test121",
"description": "",
inputfile: fl
}
};
request(options, function (err, resp, body) {
console.log(body);
});
return msg;
http-request
如果我使用节点,我不确定我在哪里犯了错误。
解决方案
从 http-request 节点的侧边栏文档:
上传文件
要执行文件上传,
msg.headers["content-type"]
应设置为multipart/form-data
并msg.payload
传递给节点必须是具有以下结构的对象:{ "KEY": { "value": FILE_CONTENTS, "options": { "filename": "FILENAME" } } }
KEY、FILE_CONTENTS 和 FILENAME 的值应设置为适当的值。
按照这个文档,你msg.payload
错了,它应该看起来像:
msg.payload: {
"name": "testName",
"description": "description",
"inputfile": {
"value": inputfile,
"options": {
"filename": "filename.txt"
}
}
}
推荐阅读
- python - 使用 Python 从视频中提取文本
- angular - 如何找到最大值?
- kubernetes - 通过 kops 在 Kubernetes v1.9.10 上启用 Horizontal Pod Autoscaling
- java - Android热敏打印机阿拉伯语问题
- python - 买入更高时保持最低平均利润
- python - 当我试图读取二进制文件时,Python 在做什么?
- python - 将 pandas 数据框导出到 json 并返回到具有相同顺序的列的数据框
- powerbi - 当 Power BI 中存在空白时,测量的总计不正确
- angularjs - 如何在Angularjs中突出显示选定的行
- php - 仅允许特定 Woocommerce 结帐字段上的字母