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

Alternative to mg_upload (Step 17/?)

This commit is contained in:
bel
2016-01-16 00:42:11 +01:00
parent da73b0f831
commit 0d433b9f23
2 changed files with 85 additions and 27 deletions

View File

@ -155,12 +155,26 @@ FileHandler(struct mg_connection *conn, void *cbdata)
}
enum {
FORM_DISPOSITION_SKIP = 0x0,
FORM_DISPOSITION_GET = 0x1,
FORM_DISPOSITION_STORE = 0x2,
FORM_DISPOSITION_READ = 0x4,
FORM_DISPOSITION_ABORT = 0x10
};
struct mg_form_data_handler {
int (*field_found)(const char *key,
size_t keylen,
const char *filename,
int *disposition,
void *user_data);
int (*field_get)(const char *key,
size_t keylen,
const char *filename,
const char *value,
size_t valuelen,
void *user_data);
void *user_data;
};
@ -169,16 +183,30 @@ int
field_found(const char *key,
size_t keylen,
const char *filename,
int *disposition,
void *user_data)
{
struct mg_connection *conn = (struct mg_connection *)user_data;
mg_write(conn, key, keylen);
mg_printf(conn, ":\r\n");
return FORM_DISPOSITION_GET;
}
int
field_get(const char *key,
size_t keylen,
const char *filename,
const char *value,
size_t valuelen,
void *user_data)
{
struct mg_connection *conn = (struct mg_connection *)user_data;
mg_write(conn, key, keylen);
mg_printf(conn, " = ");
// mg_write(conn, value, vallen);
// TODO: disposition = skip/store/read/abort
mg_printf(conn, "\r\n");
mg_write(conn, value, valuelen);
mg_printf(conn, "\r\n\r\n");
return 0;
}
@ -190,7 +218,7 @@ 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 = {field_found, 0};
struct mg_form_data_handler fdh = {field_found, field_get, 0};
/* TODO: Checks before calling handle_form_data ? */
(void)req_info;