Created
July 2, 2020 11:14
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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