struct mg_form_data_handler;| Field | Description | 
|---|---|
| field_found | int field_found( const char *key, const char *filename, char *path, size_t pathlen, void *user_data ); | 
| The callback function field_found()is called when a new field has been found. The return value of this callback is used to define how the field should be processed. The parameters contain the following information: | |
| key- The name of the field as it was named with thenametag in the HTML source. | |
| filename- The name of the file to upload. Please note that this parameter is only valid when the input type was set tofile. Otherwise this parameter has the valueNULL. | |
| path- This is an output parameter used to store the full name of the file including the path to store an incoming file at the computer. This parameter must be provided by the application to Civetweb when a form field of typefileis found. Please not that together with setting this parameter, the callback function must returnMG_FORM_FIELD_STORAGE_STORE.i With any other return value the contents of thepathbuffer is ignored by Civetweb. | |
| pathlen- The length of the buffer where the output path can be stored. | |
| user_data- A pointer to the value of the fielduser_dataof the structurestruct mg_form_data_handler. | |
| The callback function field_found()can return the following values back to Civetweb: | |
| MG_FORM_FIELD_STORAGE_SKIP- Ignore the field and continue with processing the next field | |
| MG_FORM_FIELD_STORAGE_GET- Call the callback functionfield_get()to receive the form data | |
| MG_FORM_FIELD_STORAGE_STORE- Store a file aspathand overwrite that file if it already exists | |
| MG_FORM_FIELD_STORAGE_ABORT- Stop parsing the request and ignore all remaining form fields | |
| field_get | int field_get( const char *key, const char *value, size_t valuelen, void *user_data ); | 
| If the callback function field_found()returnedFORM_FIELD_STORAGE_GET, Civetweb will callfield_get()one or more times to pass back the data for this field. | |
| key- the name of the field being decoded, note this is only passed on the first call for file parameters (bug?) | |
| value- a pointer to the data read so far from the field's value | |
| valuelen- the size of the data in the value for this call tofield_get() | |
| user_data- A pointer to the value of the fielduser_dataof the structurestruct mg_form_data_handler. | |
| returnMG_FORM_FIELD_HANDLE_GET- to continue calling get until all data has been received. | |
| returnMG_FORM_FIELD_HANDLE_NEXT- to skip further calls to get for this field and move on to the next field. | |
| returnMG_FORM_FIELD_HANDLE_ABORT- to stop parsing this form and abandon the search for further fields. | |
| field_store | int field_store( const char *path, long long file_size, void *user_data ); | 
| If the callback function field_found()returnedMG_FORM_FIELD_STORAGE_STORE, Civetweb will try to store the received data in a file. If writing the file is successful, the callback functionfield_store()is called. This function is only called after completion of a full upload, not if a file has only partly been uploaded. When only part of a file is received, Civetweb will delete that partly upload in the background and not inform the main application through this callback. The following parameters are provided in the function call | |
| path- The path on the server where the file was stored | |
| file_size- The size of the stored file in bytes | |
| user_data- The value of the fielduser_datawhen the callback functions were registered with a call tomg_handle_form_request(); | |
| user_data | void * | 
| The user_datafield is a user supplied argument that will be passed as parameter to each of callback functions | 
The structure struct mg_form_data_handler contains callback functions for handling form fields. Form fields give additional information back from a web page to the server which can be processed by these callback functions.