1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

Georg Huettenegger's updates

This commit is contained in:
Daniel Stenberg 2001-08-28 08:55:26 +00:00
parent 613eafaf02
commit 0452fd8657

View File

@ -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
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
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.
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.
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,