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

The ARRAY stuff is now added

parent 3d4cd8c9
No related branches found
No related tags found
No related merge requests found
......@@ -28,14 +28,17 @@ CURLFORM_COPYNAME or CURLFORM_PTRNAME followed by a string is used for
the name of the section. Optionally one may use CURLFORM_NAMELENGTH to
specify the length of the name (allowing null characters within the name).
The three options for providing values are: CURLFORM_COPYCONTENTS,
CURLFORM_PTRCONTENTS, or CURLFORM_FILE, followed by a char or void
pointer (allowed for PTRCONTENTS).
The four options for providing values are: CURLFORM_COPYCONTENTS,
CURLFORM_PTRCONTENTS, CURLFORM_FILE, or CURLFORM_FILECONTENT followed
by a char or void pointer (allowed for PTRCONTENTS).
CURLFORM_FILECONTENT does a normal post like CURLFORM_COPYCONTENTS but
the actual value is read from the filename given as a string.
Other arguments may be CURLFORM_CONTENTTYPE if the
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
in this case)
in this case).
For CURLFORM_PTRCONTENTS or CURLFORM_COPYNAME the user may also add
CURLFORM_CONTENTSLENGTH followed by the length as a long (if not given
......@@ -45,6 +48,16 @@ For CURLFORM_FILE the user may send multiple files in one section by
providing multiple CURLFORM_FILE arguments each followed by the filename
(and each FILE is allowed to have a CONTENTTYPE).
Another possibility to send single or multiple files in one section is
to use CURLFORM_ARRAY that gets a struct curl_forms array as its
value. Each structure element has a CURLformoption and a char
pointer. For the options only CURLFORM_FILE, CURLFORM_CONTENTTYPE, and
CURLFORM_END (that is used to determine the end of the array and thus
must be the option of the last and no other element of the curl_forms
array) are allowed. The effect of this parameter is the same as giving
multiple CURLFORM_FILE options possibly with CURLFORM_CONTENTTYPE
after or before each CURLFORM_FILE option.
The last argument always is CURLFORM_END.
The pointers \fI*firstitem\fP and \fI*lastitem\fP should both be pointing to
......@@ -74,6 +87,9 @@ Returns non-zero if an error occurs.
char buffer[] = "test buffer";
char htmlbuffer[] = "<HTML>test buffer</HTML>";
long htmlbufferlength = strlen(htmlbuffer);
struct curl_forms forms[3];
char file1[] = "my-face.jpg";
char file2[] = "your-face.jpg";
/* add null character into htmlbuffer, to demonstrate that
transfers of buffers containing null characters actually work
*/
......@@ -109,6 +125,18 @@ Returns non-zero if an error occurs.
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
CURLFORM_FILE, "my-face.jpg",
CURLFORM_FILE, "your-face.jpg", CURLFORM_END);
/* Add two file section using CURLFORM_ARRAY */
forms[0].option = CURLFORM_FILE;
forms[0].value = file1;
forms[1].option = CURLFORM_FILE;
forms[1].value = file2;
forms[2].value = CURLFORM_END;
/* no option needed for the end marker */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
CURLFORM_ARRAY, forms, CURLFORM_END);
/* Add the content of a file as a normal post text value */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent",
CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END);
/* Set the form info */
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
......
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