shellfilecurlpostfile-upload

Using cURL to upload POST data with files


I would like to use cURL to not only send data parameters in HTTP POST but to also upload files with specific form name. How should I go about doing that ?

HTTP Post parameters:

userid = 12345 filecomment = This is an image file

HTTP File upload: File location = /home/user1/Desktop/test.jpg Form name for file = image (correspond to the $_FILES['image'] at the PHP side)

I figured part of the cURL command as follows:

curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php

The problem I am getting is as follows:

Notice: Undefined index: image in /var/www/uploader.php

The problem is I am using $_FILES['image'] to pick up files in the PHP script.

How do I adjust my cURL commands accordingly ?


Solution

  • You need to use the -F option:
    -F/--form <name=content> Specify HTTP multipart POST data (H)

    Try this:

    curl \
      -F "userid=1" \
      -F "filecomment=This is an image file" \
      -F "image=@/home/user1/Desktop/test.jpg" \
      localhost/uploader.php