Skip to content
Snippets Groups Projects
Commit 0452fd86 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Georg Huettenegger's updates

parent 613eafaf
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.\" nroff -man [file] .\" nroff -man [file]
.\" $Id$ .\" $Id$
.\" .\"
.TH curl_formadd 3 "19 August 2001" "libcurl 7.9" "libcurl Manual" .TH curl_formadd 3 "27 August 2001" "libcurl 7.9" "libcurl Manual"
.SH NAME .SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS .SH SYNOPSIS
...@@ -24,21 +24,22 @@ After \fIlastitem\fP follow the real arguments that constitute the ...@@ -24,21 +24,22 @@ After \fIlastitem\fP follow the real arguments that constitute the
new section (if the following description confuses you jump directly new section (if the following description confuses you jump directly
to the examples): to the examples):
The first is always CURLFORM_COPYNAME followed by a string used for CURLFORM_COPYNAME or CURLFORM_PTRNAME followed by a string is used for
the name of the section. the name of the section. Optionally one may use CURLFORM_NAMELENGTH to
specify the length of the name (allowing null characters within the name).
Afterwards one may use one of three arguments: CURLFORM_COPYCONTENTS, The three options for providing values are: CURLFORM_COPYCONTENTS,
CURLFORM_PTRCONTENTS, or CURLFORM_FILE. followed by a char or void CURLFORM_PTRCONTENTS, or CURLFORM_FILE, followed by a char or void
pointer (allowed for PTRCONTENTS). pointer (allowed for PTRCONTENTS).
The next argument may be CURLFORM_CONTENTTYPE if the Other arguments may be CURLFORM_CONTENTTYPE if the
user wishes to specify one (for FILE if no type is given the library user wishes to specify one (for FILE if no type is given the library
tries to provide the correct one; for CONTENTS no Content-Type is sent tries to provide the correct one; for CONTENTS no Content-Type is sent
in this case) in this case)
For CURLFORM_PTRCONTENTS the user may also add CURLFORM_CONTENTSLENGTH For CURLFORM_PTRCONTENTS or CURLFORM_COPYNAME the user may also add
followed by the length as a long (if not given the library will use CURLFORM_CONTENTSLENGTH followed by the length as a long (if not given
strlen to determine the length; for COPYCONTENTS this is always done). the library will use strlen to determine the length).
For CURLFORM_FILE the user may send multiple files in one section by For CURLFORM_FILE the user may send multiple files in one section by
providing multiple CURLFORM_FILE arguments each followed by the filename providing multiple CURLFORM_FILE arguments each followed by the filename
...@@ -52,13 +53,13 @@ the function itself. You must call \fIcurl_formfree\fP after the form post has ...@@ -52,13 +53,13 @@ the function itself. You must call \fIcurl_formfree\fP after the form post has
been done to free the resources again. been done to free the resources again.
This function will copy all input data except the data pointed to by This function will copy all input data except the data pointed to by
the argument after CURLFORM_PTRCONTENTS and keep its own the arguments after CURLFORM_PTRNAME and CURLFORM_PTRCONTENTS and keep
version of it allocated until you call \fIcurl_formfree\fP. When its own version of it allocated until you call \fIcurl_formfree\fP. When
you've passed the pointer to \fIcurl_easy_setopt\fP, you must not free you've passed the pointer to \fIcurl_easy_setopt\fP, you must not free
the list until after you've called \fIcurl_easy_cleanup\fP for the the list until after you've called \fIcurl_easy_cleanup\fP for the
curl handle. If you provide a pointer as an argument after curl handle. If you provide a pointer as an arguments after
CURLFORM_PTRCONTENTS you must ensure that the pointer stays valid CURLFORM_PTRNAME or CURLFORM_PTRCONTENTS you must ensure that the pointer
until you call \fIcurl_form_free\fP and \fIcurl_easy_cleanup\fP. stays valid until you call \fIcurl_form_free\fP and \fIcurl_easy_cleanup\fP.
See example below. See example below.
.SH RETURN VALUE .SH RETURN VALUE
...@@ -68,6 +69,8 @@ Returns non-zero if an error occurs. ...@@ -68,6 +69,8 @@ Returns non-zero if an error occurs.
HttpPost* post = NULL; HttpPost* post = NULL;
HttpPost* last = NULL; HttpPost* last = NULL;
char namebuffer[] = "name buffer";
long namelength = strlen(namebuffer);
char buffer[] = "test buffer"; char buffer[] = "test buffer";
char htmlbuffer[] = "<HTML>test buffer</HTML>"; char htmlbuffer[] = "<HTML>test buffer</HTML>";
long htmlbufferlength = strlen(htmlbuffer); long htmlbufferlength = strlen(htmlbuffer);
...@@ -84,8 +87,12 @@ Returns non-zero if an error occurs. ...@@ -84,8 +87,12 @@ Returns non-zero if an error occurs.
CURLFORM_COPYCONTENTS, "<HTML></HTML>", CURLFORM_COPYCONTENTS, "<HTML></HTML>",
CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END); CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
/* Add name/ptrcontent section */ /* Add name/ptrcontent section */
curl_formadd(&post, &past, CURLFORM_COPYNAME, "name_for_ptrcontent", curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
CURLFORM_PTRCONTENTS, buffer, CURLFORM_END); CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
/* Add ptrname/ptrcontent section */
curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer,
CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH,
namelength, CURLFORM_END);
/* Add name/ptrcontent/contenttype section */ /* Add name/ptrcontent/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole", curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
CURLFORM_PTRCONTENTS, htmlbuffer, CURLFORM_PTRCONTENTS, htmlbuffer,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment