1
0
mirror of https://github.com/lammertb/libhttp.git synced 2025-07-29 21:01:13 +03:00

Alternative to mg_upload (Step 5/?)

This commit is contained in:
bel
2016-01-10 22:17:27 +01:00
parent 2a676b114c
commit ff73f34ca6
4 changed files with 55 additions and 26 deletions

View File

@ -421,7 +421,10 @@ 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,

View File

@ -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

View File

@ -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")) {

View File

@ -23,7 +23,8 @@
<form action="/handle_form.embedded_c.example.callback">
See <a href="http://www.w3schools.com/html/html_form_input_types.asp">HTML form tutorial</a>.<br />
See <a href="http://www.w3schools.com/html/html_form_input_types.asp">HTML form tutorial</a>
and <a href="http://www.w3.org/TR/html401/interact/forms.html">HTML spec</a>.<br />
<fieldset>
<legend>Text inputs:</legend>
@ -89,14 +90,27 @@
<textarea name="message" rows="10" cols="30">Text area default text.</textarea>
</fieldset>
<input type="submit" value="Submit to Lua script" formmethod="POST" formenctype="multipart/form-data"
<fieldset>
<legend>Submit:</legend>
<fieldset>
<legend>Submit to Lua script:</legend>
This will only work if server side Lua scripting is activated and /handle_form.lua can be found on the server.
<br>
<input type="submit" value="Submit" formmethod="POST" formenctype="multipart/form-data"
formaction="/handle_form.lua">
</fieldset>
<fieldset>
<legend>Submit to callback:</legend>
This will only work in the embedded_c example.
<br>
<input type="submit" value="Submit (form default)">
<input type="submit" value="Submit (GET)" formmethod="GET">
<input type="submit" value="Submit (POST)" formmethod="POST">
<input type="submit" value="Submit (POST, url-encoded)" formmethod="POST" formenctype="application/x-www-form-urlencoded">
<input type="submit" value="Submit (POST, form-data)" formmethod="POST" formenctype="multipart/form-data">
</fieldset>
</fieldset>
</form>
</body>