diff --git a/examples/embedded_c/embedded_c.c b/examples/embedded_c/embedded_c.c index ee3bc467..86c73ee1 100644 --- a/examples/embedded_c/embedded_c.c +++ b/examples/embedded_c/embedded_c.c @@ -147,10 +147,10 @@ FooHandler(struct mg_connection *conn, void *cbdata) int FileHandler(struct mg_connection *conn, void *cbdata) { - /* In this handler, we ignore the req_info and send the file "fileName". */ - const char *fileName = (const char*)cbdata; + /* In this handler, we ignore the req_info and send the file "fileName". */ + const char *fileName = (const char *)cbdata; - mg_send_file(conn, fileName); + mg_send_file(conn, fileName); return 1; } @@ -160,13 +160,13 @@ FormHandler(struct mg_connection *conn, void *cbdata) { /* Handler may access the request info using mg_get_request_info */ const struct mg_request_info *req_info = mg_get_request_info(conn); - int ret; - struct mg_form_data_handler *fdh = 0; + int ret; + struct mg_form_data_handler *fdh = 0; - /* TODO: Checks before calling handle_form_data ? */ - (void)req_info; + /* TODO: Checks before calling handle_form_data ? */ + (void)req_info; - ret = handle_form_data(conn, fdh); + ret = handle_form_data(conn, fdh); return 1; } @@ -361,7 +361,7 @@ main(int argc, char *argv[]) #endif #ifndef NO_SSL "ssl_certificate", - "../../resources/cert/server.pem", + "../../resources/cert/server.pem", #endif 0}; struct mg_callbacks callbacks; @@ -421,13 +421,16 @@ main(int argc, char *argv[]) mg_set_request_handler(ctx, "**.foo$", FooHandler, 0); /* Add handler for /form (serve a file outside the document root) */ - mg_set_request_handler(ctx, "/form", FileHandler, (void *)"../../test/form.html"); + mg_set_request_handler(ctx, + "/form", + FileHandler, + (void *)"../../test/form.html"); - /* Add handler for form data */ - mg_set_request_handler(ctx, - "/handle_form.embedded_c.example.callback", - FormHandler, - (void *)0); + /* Add handler for form data */ + mg_set_request_handler(ctx, + "/handle_form.embedded_c.example.callback", + FormHandler, + (void *)0); /* Add HTTP site to open a websocket connection */ mg_set_request_handler(ctx, "/websocket", WebSocketStartHandler, 0); diff --git a/format.bat b/format.bat index fa8a1b6b..35e8a626 100644 --- a/format.bat +++ b/format.bat @@ -27,3 +27,4 @@ clang-format -i test/shared.c clang-format -i test/civetweb_check.h clang-format -i test/main.c +clang-format -i examples/embedded_c/embedded_c.c diff --git a/src/handle_form.inl b/src/handle_form.inl index 9a2fc9c4..8d2e79bb 100644 --- a/src/handle_form.inl +++ b/src/handle_form.inl @@ -32,10 +32,21 @@ handle_form_data(struct mg_connection *conn, struct mg_form_data_handler *fdh) (conn->request_info.content_length > 0) || (conn->is_chunked); char *data; + /* There are three ways to encode data from a HTML form: + * 1) method: GET (default) + * The form data is in the HTTP query string. + * 2) method: POST, enctype: "application/x-www-form-urlencoded" + * The form data is in the request body. + * The body is url encoded (the default encoding for POST). + * 3) method: POST, enctype: "multipart/form-data". + * The form data is in the request body of a multipart message. + * This is the typical way to handle file upload from a form. + */ + content_type = mg_get_header(conn, "Content-Type"); if (content_type == NULL) { - /* This request does not have a content type set */ - return 0; + /* This request does not have a content type set .. TODO: but it could be a GET requst */ + //return 0; } if (!mg_strcasecmp(content_type, "APPLICATION/X-WWW-FORM-URLENCODED")) { diff --git a/test/form.html b/test/form.html index 92aaaad0..674eeecc 100644 --- a/test/form.html +++ b/test/form.html @@ -23,7 +23,8 @@