ua_conn_set_mime - build a libcurl based multipart body

void ua_conn_set_mime(struct ua_conn *conn, void *data, void (*callback)(curl_mime *mime, void *data))

Multipart creation callback for conn

See

https://curl.se/libcurl/c/smtp-mime.html

Parameters
  • conn – the connection handle to send multipart body

  • data – user data to be passed along to callback

  • callback – the user callback

Example

void to_mime(curl_mime *mime, void *data)
{
  char *filename = (char *)data;
  curl_mimepart *part = curl_mime_addpart(mime);
  curl_mime_filedata(part, filename);
  curl_mime_type(part, "application/octet-stream");
  curl_mime_name(part, "txt_file");
}

int main(void)
{
  struct user_agent *ua = ua_init(NULL);
  ua_set_url(ua, "https://www.example.com");

  struct ua_conn_attr conn_attr = { .method = HTTP_MIMEPOST };
  struct ua_conn *conn = ua_conn_start(ua);
  ua_conn_setup(conn, &conn_attr);

  ua_conn_add_header(conn, "Content-Type", "multipart/form-data");

  char *filename = "foo.txt";
  ua_conn_set_mime(conn, &filename, &to_mime);

  ua_conn_easy_perform(conn);

  ua_conn_stop(conn);
  ua_cleanup(ua);
}