Hi Santos, it is very easy to handle multi-part and/or form-data in MHD. Some time ago I sent this answer for a StackOverflow user: https://stackoverflow.com/a/32705436/3268398 .
I handle uploads and/or payload (raw content) in the library (built under MHD) I'm maintaining. It allows to get any raw content (JSON, XML etc.) using something like this in the server side <https://github.com/risoflora/libsagui/blob/master/examples/example_httpreq_payload.c> : static void req_cb(__SG_UNUSED void *cls, __SG_UNUSED struct sg_httpreq *req, __SG_UNUSED struct sg_httpres *res) { struct sg_str *payload = sg_httpreq_payload(req); sg_httpres_send(res, sg_str_content(payload), "text/plain", 200); } and this in the client side (exemplifying in cURL): curl --header "Content-Type: application/json" --request POST --data '{"abc":123}' -w "\n" http://localhost:<PORT> the sent raw content will be echoed back to the client. It is easy to iterates uploaded files <https://github.com/risoflora/libsagui/blob/master/examples/example_httpuplds.c> too: static void process_uploads(struct sg_httpreq *req, struct sg_httpres *res) { struct sg_httpupld *upld; ... upld = sg_httpreq_uploads(req); // first uploaded file while (upld) { name = sg_httpupld_name(upld); if ((errnum = sg_httpupld_save(upld, true)) == 0) // save the file sg_str_printf(body, "<li><a href=\"?file=%s\">%s</a></li>", name, name); else { sg_strerror(errnum, errmsg, sizeof(errmsg)); sg_str_printf(body, "<li><font color='red'>%s - failed - %s</font></li>", name, errmsg); // handle saving errors } sg_httpuplds_next(&upld); // next uploaded file } ... Maybe it can be used as a starting point for you to check how to handle the MHD's ... const char *upld_data, size_t *upld_data_size ... AHC parameters. The related lines I've used, are: https://github.com/risoflora/libsagui/blob/master/src/sg_httpsrv.c#L60 https://github.com/risoflora/libsagui/blob/master/src/sg_httpuplds.c#L119 Hope this helps you. ☺ On Fri, Nov 9, 2018 at 1:04 PM Santos Das <santos....@gmail.com> wrote: > Hi, > > Can you please let me know how we do read the multupart message body using > MHD. > > I am having problem in reading the multi part. > > Thanks, Santos > -- Silvio Clécio