Browse Source

Alternative to mg_upload (Step 15/?)

bel 9 years ago
parent
commit
233e726fe3
2 changed files with 10 additions and 4 deletions
  1. 1 1
      examples/embedded_c/embedded_c.c
  2. 9 3
      src/handle_form.inl

+ 1 - 1
examples/embedded_c/embedded_c.c

@@ -190,7 +190,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, 0};
+	struct mg_form_data_handler fdh = {field_found, 0};
 
 	/* TODO: Checks before calling handle_form_data ? */
 	(void)req_info;

+ 9 - 3
src/handle_form.inl

@@ -56,8 +56,14 @@ url_encoded_field_found(const char *key,
                         struct mg_form_data_handler *fdh)
 {
 	/* Call callback */
-	/* TODO: mg_url_decode(key, (size_t)keylen, ) */
-	return fdh->field_found(key, keylen, filename, disposition, fdh->user_data);
+	char key_dec[1024];
+	int ret =
+	    mg_url_decode(key, (size_t)keylen, key_dec, (int)sizeof(key_dec), 1);
+	if ((ret < sizeof(key_dec)) && (ret >= 0)) {
+		return fdh->field_found(
+		    key, keylen, filename, disposition, fdh->user_data);
+	}
+	return 0; /* SKIP; */
 }
 
 
@@ -187,7 +193,7 @@ mg_handle_form_data(struct mg_connection *conn,
 
 			/* Call callback */
 			fdh->field_found(
-			    buf, (size_t)keylen, val, (size_t)vallen, fdh->user_data);
+			    buf, (size_t)keylen, NULL, &disposition, fdh->user_data);
 
 			/* Proceed to next entry */
 			used = next - buf;