NODE RED http请求 - 通过API发布图像(Face ++)

时间:2018-04-02 18:59:05

标签: http request nodes node-red

我遇到与this post

类似的问题

我通过文件缓冲区节点获取图像。如果此节点进入ibm watson的视觉识别节点,它可以正常工作。

我还想使用此图片将其发布到另一个API中。因此,我使用URL = https://api-us.faceplusplus.com/facepp/v3/detect

的http请求节点

在我面前,我使用一个函数节点为这个http请求创建标题正文。它非常好用。但我无法附加"它的形象。

我不知道正确的语法。它是" image_file"。

的行
@TargetInstance

如果我使用不同的图像输入(url),它可以正常工作。

var image = msg.payload;
msg.headers = {};
msg.headers["content-type"] ='application/x-www-form-urlencoded';
msg.payload = {};
msg.payload['api_key'] = 'zrxC';
msg.payload['api_secret'] = 's3UN';
msg.payload['image_file'] = image;
msg.payload['return_landmark'] = '1';
msg.payload['return_attributes'] = 'gender,age,emotion,beauty,skinstatus';
return msg;

Soooo ...语法;)

也许它也是一个问题,因为图像需要另一种内容类型。是否有可能为不同的身体部位提供不同的内容类型?

编辑:我尝试了多部分http请求......这是我的整个流程。

msg.payload['image_url'] = 'http://picture.com/pic.jpg";

我的问题是将图像发送到红色突出显示的API。

Flow

1 个答案:

答案 0 :(得分:0)

要将缓冲区作为字段推送,您需要使用{{3}}将标题中的content-type设置为multipart/form-data

然后,您需要确保msg.payload对象与request节点所需的输入相匹配:

var image = msg.payload;
msg.headers = {};
msg.headers["content-type"] ='multipart/form-data';
msg.payload = {};
msg.payload['api_key'] = 'zrxC';
msg.payload['api_secret'] = 's3UN';
msg.payload['image_file'] = image;
msg.payload['return_landmark'] = '1';
msg.payload['return_attributes'] = 'gender,age,emotion,beauty,skinstatus';
return msg;