Skip to content

Instantly share code, notes, and snippets.

@shelterz
Created July 2, 2020 11:14
Show Gist options
  • Save shelterz/183b48999e4c439695bb480665df09c4 to your computer and use it in GitHub Desktop.
Save shelterz/183b48999e4c439695bb480665df09c4 to your computer and use it in GitHub Desktop.
Use http post with form-data body to upload file to web server
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
/* In windows, this will init the winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. This URL can
just as well be a https:// URL if that is what should receive the
data. */
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080");
/* Now specify the POST data */
struct curl_httppost* post = NULL;
struct curl_httppost* last = NULL;
curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
CURLFORM_COPYCONTENTS, "value", CURLFORM_END);
/* Add a single file */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "file",
CURLFORM_FILE, "file.txt", CURLFORM_END);
/* Set the form info */
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
curl_formfree(post);
}
curl_global_cleanup();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment