Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TLMSP curl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CYBER - Cyber Security
TS 103 523 MSP
TLMSP
TLMSP curl
Commits
3f248dd1
Commit
3f248dd1
authored
23 years ago
by
Daniel Stenberg
Browse files
Options
Downloads
Patches
Plain Diff
corrected return code, general cleanup
parent
c9954d19
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/curl_formadd.3
+52
-43
52 additions, 43 deletions
docs/curl_formadd.3
with
52 additions
and
43 deletions
docs/curl_formadd.3
+
52
−
43
View file @
3f248dd1
...
...
@@ -2,13 +2,13 @@
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_formadd 3 "2
7 August
2001" "libcurl 7.9" "libcurl Manual"
.TH curl_formadd 3 "2
9 October
2001" "libcurl 7.9
.1
" "libcurl Manual"
.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "
CURLcode
curl_formadd(struct HttpPost ** " firstitem,
.BI "
int
curl_formadd(struct HttpPost ** " firstitem,
.BI "struct HttpPost ** " lastitem, " ...);"
.ad
.SH DESCRIPTION
...
...
@@ -17,62 +17,62 @@ HTTP POST (sometimes refered to as rfc1867-style posts). Append one section at
a time until you've added all the sections you want included and then you pass
the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST\fP.
\fIlastitem\fP is set after each call and on repeated invokes it should be
left as set to allow repeated invokes to find the end of the list in a faster
way.
left as set to allow repeated invokes to find the end of the list faster.
After \fIlastitem\fP follow the real arguments that constitute the
new section (if the following description confuses you jump directly
to the examples):
After the \fIlastitem\fP pointer follow the real arguments. (If the following
description confuses you, jump directly to the examples):
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).
\fBCURLFORM_COPYNAME\fP or \fBCURLFORM_PTRNAME\fP followed by a string is used
for the name of the section. Optionally one may use \fBCURLFORM_NAMELENGTH\fP
to specify the length of the name (allowing null characters within the
name). All options that use the word COPY in their names copy the given
contents, while the ones with PTR in their names simply points to the (static)
data you must make sure remain until curl no longer needs it.
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).
The four options for providing values are:
\fB
CURLFORM_COPYCONTENTS
\fP
,
\fB
CURLFORM_PTRCONTENTS
\fP, \fB
CURLFORM_FILE
\fP
, or
\fB
CURLFORM_FILECONTENT
\fP
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.
\fB
CURLFORM_FILECONTENT
\fP
does a normal post like
\fB
CURLFORM_COPYCONTENTS
\fP
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).
Other arguments may be \fBCURLFORM_CONTENTTYPE\fP 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).
For CURLFORM_PTRCONTENTS or CURLFORM_COPYNAME the user may also
add
CURLFORM_CONTENTSLENGTH followed by the length as a long (if not
given
the library will use strlen to determine the length).
For
\fB
CURLFORM_PTRCONTENTS
\fP
or
\fB
CURLFORM_COPYNAME
\fP
the user may also
add \fB
CURLFORM_CONTENTSLENGTH
\fP
followed by the length as a long (if not
given
the library will use strlen to determine the length).
For CURLFORM_FILE the user may send multiple files in one section by
providing multiple CURLFORM_FILE arguments each followed by the filename
For
\fB
CURLFORM_FILE
\fP
the user may send multiple files in one section by
providing multiple
\fB
CURLFORM_FILE
\fP
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.
Another possibility to send single or multiple files in one section is
to use
\fB
CURLFORM_ARRAY
\fP
that gets a struct curl_forms array
pointer
as its
value. Each structure element has a CURLformoption and a char
pointer. For the
options only
\fB
CURLFORM_FILE
\fP, \fB
CURLFORM_CONTENTTYPE
\fP
, and
\fB
CURLFORM_END
\fP
(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
\fB
CURLFORM_FILE
\fP
options possibly with
\fB
CURLFORM_CONTENTTYPE
\fP after or
before each
\fB
CURLFORM_FILE
\fP
option.
The last argument always
is
CURLFORM_END.
The last argument
in such an array must
always
be \fB
CURLFORM_END
\fP
.
The pointers \fI*firstitem\fP and \fI*lastitem\fP should both be pointing to
NULL in the first call to this function. All list-data will be allocated by
the function itself. You must call \fIcurl_formfree\fP after the form post has
been done to free the resources again.
This function will copy all input data except the data pointed to by
the
arguments after CURLFORM_PTRNAME and CURLFORM_PTRCONTENTS and keep
This function will copy all input data except the data pointed to by
the
arguments after
\fB
CURLFORM_PTRNAME
\fP
and
\fB
CURLFORM_PTRCONTENTS
\fP
and keep
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
the
list until after you've called \fIcurl_easy_cleanup\fP for the
curl handle. If
you provide a pointer as an arguments after
CURLFORM_PTRNAME or
CURLFORM_PTRCONTENTS you must ensure that the pointer
stays valid until
you call \fIcurl_form_free\fP and \fIcurl_easy_cleanup\fP.
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
curl handle. If
you provide a pointer as an arguments after
\fBCURLFORM_PTRNAME\fP or
\fB
CURLFORM_PTRCONTENTS
\fP
you must ensure that the pointer
stays valid until
you call \fIcurl_form_free\fP and \fIcurl_easy_cleanup\fP.
See example below.
.SH RETURN VALUE
...
...
@@ -98,39 +98,48 @@ Returns non-zero if an error occurs.
/* Add simple name/content section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
CURLFORM_COPYCONTENTS, "content", CURLFORM_END);
/* Add simple name/content/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode",
CURLFORM_COPYCONTENTS, "<HTML></HTML>",
CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
/* Add name/ptrcontent section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent",
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 */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole",
CURLFORM_PTRCONTENTS, htmlbuffer,
CURLFORM_CONTENTSLENGTH, htmlbufferlength,
CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END);
/* Add simple file section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
CURLFORM_FILE, "my-face.jpg", CURLFORM_END);
/* Add file/contenttype section */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture",
CURLFORM_FILE, "my-face.jpg",
CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
/* Add two file section */
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;
forms[2].option = CURLFORM_END;
/* no option needed for the end marker */
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures",
CURLFORM_ARRAY, forms, CURLFORM_END);
...
...
@@ -143,7 +152,7 @@ Returns non-zero if an error occurs.
.SH "SEE ALSO"
.BR curl_easy_setopt "(3), "
.BR curl_formparse "(3) [deprecated], "
.BR curl_formfree "(3)
.BR curl_formfree "(3)
"
.SH BUGS
Surely there are some, you tell me!
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment