| /***************************************************************************** |
| * _ _ ____ _ |
| * Project ___| | | | _ \| | |
| * / __| | | | |_) | | |
| * | (__| |_| | _ <| |___ |
| * \___|\___/|_| \_\_____| |
| * |
| * $Id$ |
| * |
| * Example code that uploads a file name 'foo' to a remote script that accepts |
| * "HTML form based" (as described in RFC1738) uploads using HTTP POST. |
| * |
| * The imaginary form we'll fill in looks like: |
| * |
| * <form method="post" enctype="multipart/form-data" action="examplepost.cgi"> |
| * Enter file: <input type="file" name="sendfile" size="40"> |
| * Enter file name: <input type="text" name="filename" size="30"> |
| * <input type="submit" value="send" name="submit"> |
| * </form> |
| * |
| * This exact source code has not been verified to work. |
| */ |
| |
| /* to make this work under windows, use the win32-functions from the |
| win32socket.c file as well */ |
| |
| #include <stdio.h> |
| |
| #include <curl/curl.h> |
| #include <curl/types.h> |
| #include <curl/easy.h> |
| |
| int main(int argc, char **argv) |
| { |
| CURL *curl; |
| CURLcode res; |
| |
| struct HttpPost *formpost=NULL; |
| struct HttpPost *lastptr=NULL; |
| |
| /* Fill in the file upload field */ |
| curl_formparse("sendfile=@foo", |
| &formpost, |
| &lastptr); |
| |
| /* Fill in the filename field */ |
| curl_formparse("filename=foo", |
| &formpost, |
| &lastptr); |
| |
| |
| /* Fill in the submit field too, even if this is rarely needed */ |
| curl_formparse("submit=send", |
| &formpost, |
| &lastptr); |
| |
| curl = curl_easy_init(); |
| if(curl) { |
| /* what URL that receives this POST */ |
| curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/examplepost.cgi"); |
| curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); |
| res = curl_easy_perform(curl); |
| |
| /* always cleanup */ |
| curl_easy_cleanup(curl); |
| |
| /* then cleanup the formpost chain */ |
| curl_formfree(formpost); |
| } |
| return 0; |
| } |