Igor's Techno Club

Uploading Files with curl

When I was reading OpenApi docs about image editing I noticed that they were using -F arguments. This is something I never seen before, and especially didn't know curl was capable of it.

What Does -F Do?

The -F flag tells curl to send data as multipart/form-data, the same format browsers use when you upload a file through an HTML form.

A simple example:

curl -F "image=@body-lotion.png" http://example.com/upload

This uploads the body-lotion.png file under the form field named image.

What About image[]?

Sometimes you see a field like image[]:

curl -F "image[]=@body-lotion.png" http://example.com/upload

The square brackets [] are a convention (especially in PHP and Ruby backend frameworks) that tells the server to treat the incoming files as an array. This is useful when uploading multiple files:

curl -F "image[]=@pic1.png" -F "image[]=@pic2.png" http://example.com/upload

Here, pic1.png and pic2.png are both uploaded under the image[] field, and the server will receive them as a list.

Important: File Location

The file you upload must exist at the path you specify. If it’s just the filename (@body-lotion.png), it must be in your current working directory. You can also specify full or relative paths:

curl -F "image[]=@/path/to/body-lotion.png" http://example.com/upload

If the file isn’t found, curl will return an error.