# CURL implementation in node red

**URL:** <https://discourse.nodered.org/t/curl-implementation-in-node-red/40956>\
**Category:** General\
**Created:** [14 February 2021 03:57 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956 "2021-02-14T03:57:12Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![4\_fools](https://avatars.discourse-cdn.com/v4/letter/4/f6c823/32.png) [@4\_fools](https://discourse.nodered.org/u/4_fools)\
**Post date:** [14 February 2021 03:57 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/1 "2021-02-14T03:57:13Z")

</div>

trying to implement this curl request in node red stuck on how to do the -F parts

curl -i -X POST -H “Content-Type: multipart/form-data” -F “upload=@/Users/al/artwork/pacman.gif” -F “upload-type=ANIMATED\_GIF” -F “console=MAME” -F “displaynow=1” [http://localhost:8080/uploadplatform](http://localhost:8080/uploadplatform)

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [14 February 2021 10:19 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/2 "2021-02-14T10:19:58Z")

</div>

What nodes are you using?  
when you say you are stuck on the -F parts - what do you mean?  
What have you done so far?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [14 February 2021 10:46 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/3 "2021-02-14T10:46:18Z")

</div>

I take it as meaning he wants to POST form data in node-red (and that curl is a working example)

@4_fools try making a JS object with your form properties and values as key/value pairs and pass that into the http request node as `msg.payload`

---

<div class="post-metadata">

**Author:** ![4\_fools](https://avatars.discourse-cdn.com/v4/letter/4/f6c823/32.png) [@4\_fools](https://discourse.nodered.org/u/4_fools)\
**Post date:** [14 February 2021 17:18 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/4 "2021-02-14T17:18:25Z")

</div>

I have tried following this picture which I believe you posted a while ago

[https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/c/9cf6a6286527af2ddbcc7863642f99995c0d27a9.png](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/c/9cf6a6286527af2ddbcc7863642f99995c0d27a9.png)

I am sorry but I do not understand what this means  
"JS object with your form properties and values as key/value pairs"

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [14 February 2021 17:45 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/5 "2021-02-14T17:45:22Z")

</div>

> [@4\_fools](#):
>
> I am sorry but I do not understand what this means  
> "JS object with your form properties and values as key/value pairs"

The is pretty basic JavaScript knowledge - you would do well to learn some JavaScript (especially about objects and JSON - it will help you get to grips with node red as will watching this playlist: [Node-RED Essentials](https://www.youtube.com/playlist?list=PLyNBB9VCLmo1hyO-4fIZ08gqFcXBkHy-6). The videos are done by the developers of node-red.

* * *

A JS object is created like this...

```auto
var myObject = {}; //create an empty object
myObject.myNumberProperty = 123; // add a number property
var theNumber = myObject.myNumberProperty; //how to access a property in an object

```

So where i said "try making a JS object with your form properties and values as key/value pairs" you would do something like this...

```javascript
/* working curl...
curl -i -X POST -H “Content-Type: multipart/form-data” -F “upload=@/Users/al/artwork/pacman.gif” -F “upload-type=ANIMATED_GIF” -F “console=MAME” -F “displaynow=1”
*/

//set msg.headers to an {object} with property "Content-Type" set to "multipart/form-data"
msg.headers = {
    "Content-Type": "multipart/form-data" 
}
    
//set payload to an {object} with key/values as specified in the curl form data
msg.payload = {
        "upload": "@/Users/al/artwork/pacman.gif",
        "upload-type": "ANIMATED_GIF",
        "console": "MAME",
        "displaynow": 1
};  

//set url
msg.url = "http://localhost:8080/uploadplatform"

// return the msg to next node (the http request)
return msg;

```

NOTE: the `msg.url` property can be set in the function or in the http request node (read the built in help on the RH side-bar)

Here is a demo flow you can import (untested - as i dont have your endpoint or flow - but it should get you close)

```auto
[{"id":"bb7f1af3.ad7df8","type":"function","z":"553814a2.1248ec","name":"","func":"/* working curl...\ncurl -i -X POST -H “Content-Type: multipart/form-data” -F “upload=@/Users/al/artwork/pacman.gif” -F “upload-type=ANIMATED_GIF” -F “console=MAME” -F “displaynow=1”\n*/\n\n//set msg.headers to an {object} with property \"Content-Type\" set to \"multipart/form-data\"\nmsg.headers = {\n \"Content-Type\": \"multipart/form-data\" \n}\n \n//set payload to an {object} with properties and values\nmsg.payload = {\n \"upload\": \"@/Users/al/artwork/pacman.gif\",\n \"upload-type\": \"ANIMATED_GIF\",\n \"console\": \"MAME\",\n \"displaynow\": 1\n}; \n\n//set url\nmsg.url = \"http://localhost:8080/uploadplatform\"\n\n// return the msg to next node (the http request)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1500,"y":1040,"wires":[["2a16909e.64bbf"]]},{"id":"e2e9f5bb.79a668","type":"inject","z":"553814a2.1248ec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1340,"y":1040,"wires":[["bb7f1af3.ad7df8"]]},{"id":"2a16909e.64bbf","type":"http request","z":"553814a2.1248ec","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":1670,"y":1040,"wires":[["4209b9dd.0c7928"]]},{"id":"4209b9dd.0c7928","type":"debug","z":"553814a2.1248ec","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1850,"y":1040,"wires":[]}]

```

---

<div class="post-metadata">

**Author:** ![4\_fools](https://avatars.discourse-cdn.com/v4/letter/4/f6c823/32.png) [@4\_fools](https://discourse.nodered.org/u/4_fools)\
**Post date:** [14 February 2021 17:52 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/6 "2021-02-14T17:52:23Z")

</div>

Thank you I will go though some of the tutorials

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [15 April 2021 17:52 UTC](https://discourse.nodered.org/t/curl-implementation-in-node-red/40956/7 "2021-04-15T17:52:46Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
