xref: /curl/docs/libcurl/curl_mime_data.md (revision b935fd4a)
1---
2c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
3SPDX-License-Identifier: curl
4Title: curl_mime_data
5Section: 3
6Source: libcurl
7See-also:
8  - curl_mime_addpart (3)
9  - curl_mime_data_cb (3)
10  - curl_mime_name (3)
11  - curl_mime_type (3)
12Protocol:
13  - HTTP
14  - IMAP
15  - SMTP
16---
17
18# NAME
19
20curl_mime_data - set a mime part's body data from memory
21
22# SYNOPSIS
23
24~~~c
25#include <curl/curl.h>
26
27CURLcode curl_mime_data(curl_mimepart *part, const char *data,
28                        size_t datasize);
29~~~
30
31# DESCRIPTION
32
33curl_mime_data(3) sets a mime part's body content from memory data.
34
35*part* is the mime part to assign contents to, created with
36curl_mime_addpart(3).
37
38*data* points to the data that gets copied by this function. The storage
39may safely be reused after the call.
40
41*datasize* is the number of bytes *data* points to. It can be set to
42*CURL_ZERO_TERMINATED* to indicate *data* is a null-terminated
43character string.
44
45Setting a part's contents multiple times is valid: only the value set by the
46last call is retained. It is possible to unassign part's contents by setting
47*data* to NULL.
48
49Setting large data is memory consuming: one might consider using
50curl_mime_data_cb(3) in such a case.
51
52# EXAMPLE
53
54~~~c
55int main(void)
56{
57  curl_mime *mime;
58  curl_mimepart *part;
59
60  CURL *curl = curl_easy_init();
61  if(curl) {
62    /* create a mime handle */
63    mime = curl_mime_init(curl);
64
65    /* add a part */
66    part = curl_mime_addpart(mime);
67
68    /* add data to the part  */
69    curl_mime_data(part, "raw contents to send", CURL_ZERO_TERMINATED);
70  }
71}
72~~~
73
74# AVAILABILITY
75
76As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0.
77
78# RETURN VALUE
79
80CURLE_OK or a CURL error code upon failure.
81