7 Little Changes That’ll Make A Big Difference With Your Curl Upload File

7 Little Changes That'll Make A Big Difference With Your Curl Upload File

Uploading files or images using Curl command-line utility it’s effortless! Curl provides the simplest form of syntax for uploading files.

This article will help you to learn the basics of curl upload files. Before going to the tutorial, you need to know the basics of upload and the protocols involved in a curl upload file.

In this article, we will walk you through the basics of curl upload files, and in the last section, you will learn how a slight change will make a big difference with your curl upload file using a file stack.

What is Upload?

Uploading a file is a term for sending data to a remote server. For each protocol, uploading is done differently. Even several protocols may even allow different paths to uploading data.

You can upload data using any of these protocols: FILE, FTP, FTPS, HTTP, HTTPS, IMAP, IMAPS, SFTP, SCP, SMB, SMBS, SMTP, SMTPS, and TFTP.

What is Curl?

Curl stands for-Client URL, a computer software project providing a library and command-line tool that runs on Windows, Linux, and macOS platforms.

Curl is designed to transfer data from a server or server using many popular network protocols, including HTTP, HTTPS, and FTP, and has built-in support for SSL, proxies, certificate validation, HTTP cookies, and user authentication.

Are There Different Types of HTTP Curl Uploads?

Laptop and Notepad With App Icons

HTTP and HTTPS offer several different ways to upload data to a server, and curl offers easy command-line options to do that in three common ways.

All you need is one HTTP request from file to cloud, then Filestack can help. The Filestack File API provides several methods for uploading files over HTTP:

  1. HTTP POST: This upload usually follows the -d or –data options, but a few additional alterations are needed.
  2. HTTP Multipart formpost: Multipart formpost is also used in HTML forms on websites when file upload is involved. This file upload type is HTTP POST, but it sends data formatted according to many special rules. HTTP multipart formposts are done with -F.
  3. HTTP PUT: HTTP PUT is also an upload method but the least used upload method for HTTP. You have to use the –T option with the file to upload.

What is HTTP POST?

HTTP POST is the traditional HTTP protocol method for sending files and data to a server. The POST method asks the webserver to accept and process the data contained in the body of the POST message.

The POST method is frequently used for uploading files by submitting HTML forms and CRUD operations when creating a resource on the server.

How Do You Upload Using Curl Upload Files?

To upload a file with Curl, use the -d or -F command-line options. Then start the data with the @ symbol followed by the file name. To send multiple files, just repeat the -F option repeatedly. Curl will automatically deliver the Content-Type header basis on the file extension.

You can also indicate a custom Content-Type header using the -H command-line option. The file will be sent using the HTTP POST method and specify a different HTTP method using the -X command line parameter.

1. Posting Form Data With Curl

curl -X POST -F ‘username=admin’ -F ‘password=domainpassword’ http://example.com/post.php

2. Posting Files With Curl

You can post any file type with cURL just by specifying the @ character and the image keyword. Check out the example below, which posts the image file with the form data.

curl \

-F “username=demo” \

-F “password=demo”\

-F “filecomment=Posting an Image File” \

-F “image=@/Desktop/picture.jpg” \


If you are a windows user, then you might need to escape the path of the file by adding double quotes. Also, if you are uploading any other file type, then instead of using images, you could use “data=@filepath.”

What Are FTP Uploads?

FTP. File Transfer Protocol. Internet. Technology

When uploading FTP files, you must see the remote file system you will be accessing. First, you assign the server exactly which directory you want the upload to be placed and which file name to use.

Specify the upload URL with a trailing slash, then curl will append the locally used file name to the URL, which will ultimately be the file name used when stored remotely.

curl -T uploadthis ftp://example.com/this/directory/

But if you prefer to select a different file name on the remote side, you upload this URL that you have used locally:

curl -T uploadthis ftp://example.com/this/directory/remotename

Why Is the Perfect Tool a Game-changer?

Finding a balance between understanding tools and turning to them blindly faces a question of trust. When developers finally evaluate tools, frameworks, libraries, and services, we usually look at several factors.

The vital question remains; is the implementation going to save time?

Is it well-rounded, worthy of use in production, and supported by people focused on improving, maintaining, and updating it over time?

If the answers are “yes,” we can leverage that functionality and trust the solution, then we allow ourselves to free ourselves up to focus on what makes our project unique.

The basis for this let’s look at best practices for file uploads and then deep dive to see what makes these best practices tick.

What Is the Best Practice for File Upload?

Businessman Holding a Binary Cloud With Upload Internet Arrow 3D Rendering

Filestack has API clients, Pickers, and Framework integrations that make it easy to upload your files using various languages and frameworks. You will need to use the security credentials from the 8base GraphQL API to upload files to Filestack. Filestack’s SDKs and open source offerings are the best way to upload files.

It can upload, transform, and deliver files with automated Machine Learning intelligence with two lines of code. If you’re building a production solution, you should be using these officially supported tools.

Why? Because beyond the picker widgets, Filestack’s API offers easy ways to get files uploaded and ready for delivery., so you don’t have to think about them.

Filestack’s docs show how you can directly access these HTTP requests from the command line using cURL.

Let’s move forward to a practical exercise in manually interacting with Filestack’s API.

Upload a File to the API Using a Basic Curl Request

All requests for file API requests should be sent to: https://www.filestackapi.com/api/file

Security: For certain API requests like overwrite and delete, security may be required if security is enabled. Security credentials should be provided in query parameters or using HTTP basic auth for the File API.

Query parameters:


For basic authentication, use the following code:

Example for overwrite: Here

  • User: “app”
  • Password: APP_SECRET_KEY

curl -X POST \

-u “app:SECRET_KEY” \

-d “url=SOME_URL” “https://www.filestackapi/api/file/hGdfDXDSSNyVhVa0UeiB”

Everything is ready!

What Are Seven Small Changes That Can Make a Tremendous Difference in Curl File Upload?

If you’re launching a production website or app in a language or platform covered by one of the SDKs, you should use one of the official Filestack SDKs.

But if you’re looking to integrate with Filestack’s services in any HTTP-capable environment. In that case, you can directly interact with the API using GET, POST, and other HTTP request methods like DELETE.

1. Upload Using Filestack’s Curl Basic Upload File

The command below should be entered on the command line. This makes a GET request directly to the Filestack File API, and the result should echo to your terminal.


Sample request:

curl -X POST \

–data-binary @filename.png \

–header “Content-Type:image/png” \


Sample response


“url”: “https://cdn.filestackcontent.com/s7tdGfE5RRKFUxwsZoYv”,

“size”: 8331,

“type”: “image/png”,

“filename”: “watermark.png”,

“key”: “a1RyBxiglW92bS2SRmqM_watermark.png”


2. Upload From URL by Filestack’s Curl Upload File

Sample request:

curl -X POST \

-d url=”https://assets.filestackapi.com/watermark.png” \


Sample response:


“url”: “https://cdn.filestackcontent.com/s7tdGfE5RRKFUxwsZoYv”,

“size”: 8331,

“type”: “image/png”,

“filename”: “watermark.png”,

“key”: “a1RyBxiglW92bS2SRmqM_watermark.png”


By using Filestack, you can upload a file directly to any of Filestack’s supported backends. That will return JSON metadata, including a Filestack URL for the file.

Then, as a query parameter, you must submit your APIKEY and a file as multipart form data. Alternatively, you can use the “URL” option in the body of the request to supply a public URL as a file.

3. Storing Files

The default is S3 for storing the file. Other options include ‘azure’, ‘dropbox’, ‘rackspace’, and ‘gcs’. But, before using it, you must have the chosen provider configured in the developer portal to enable this feature:


Just use the following code for the request:

curl -X POST \

-d url=”https://assets.filestackapi.com/watermark.png” \


curl -X POST \

–data-binary @filename.png \

–header “Content-Type:image/png” \


Here is the response:


“url”: “https://cdn.filestackcontent.com/s7tdGfE5RRKFUxwsZoYv”,

“size”: 8331,

“type”: “image/png”,

“filename”: “watermark.png”,

“key”: “a1RyBxiglW92bS2SRmqM_watermark.png”


4. Overwriting Data

Specify that you want the data to be first decoded from base64 before being written to the file. Look at the example: if you have base64 encoded image data, you can use this flag and decode the data before writing the image file.

Request by simply writing the code

curl -X POST \

–data-binary @filename.txt \

–header “Content-Type:text/plain” \


Here is the response:


“url”: “https://cdn.filestackcontent.com/Bc2FQwXReueTsaeXB6rO”,

“mimetype”: “plain/text”,

“isWriteable”: true,

“size”: 19,

“filename”: “filename.txt”


5. Deleting Files

If you want to delete a file, you have to do it via its handle. However, the request requires security.

Request the following code:

curl -X DELETE \


6. Get a JSON Payload of Your Uploaded File Metadata

This metadata is created in real-time and is not saved in the Filestack database. It requires policy and a signature when using exif=true.

Request by following code:

curl -X GET “https://www.filestackapi.com/api/file/DCL5K46FS3OIxb5iuKby/metadata”



“mimetype”: “image/png”,

“uploaded”: 1431950945811.783,

“container”: “fp-documentation-assets”,

“writeable”: true,

“filename”: “dtKZNd1J.png”,

“location”: “S3”,

“key”: “kWg7nloGTWmHFi5nlbF9_dtKZNd1J.png”,

“path”: “kWg7nloGTWmHFi5nlbF9_dtKZNd1J.png”,

“size”: 270


Moreover, you can follow the following steps regarding curl file upload and find big changes:

7. Use -F ( — form) Option for an Error-free Curl File Upload

To upload files with CURL, a common mistake people make is to use -X POST as regular form data. In fact, that way will cause errors.

So you need a small change, and the perfect way to upload files with CURL is to use the -F ( — form) option. It will add enctype=” multipart/form-data” to the request.

$ curl -F ‘data=@path/to/local/file’ UPLOAD_ADDRESS

For instance, if you want to upload a file at /home/petehouston/hello.txt to the server http://localhost/upload which processes file input with a form parameter named img_avatar, you will make a request like this:

$ curl -F’ img_avatar=@/home/petehouston/hello.txt’ http://localhost/upload

Do You Want to Upload Multiple Files Using Curl Upload File?

To send upload requests for multiple files, just add an additional -F option,

$ curl -F ‘fileX=@/path/to/fileX’ -F ‘fileY=@/path/to/fileY’ … http://localhost/upload

Do you want to upload an array of files? Do it by putting additional -F options.

To send an upload request for an array file, simply put additional -F options with the same form parameter name as an array.

$ curl -F ‘files[]=@/path/to/fileX’ -F ‘files[]=@/path/to/fileY’ … http://localhost/upload