#include #include #include #include #include #include void tempfile_callback(struct magi_file * file, char * buffer, int len, void * _) { if (!strcmp(file->param_name, "data")) { static FILE * f = 0; if (!f) { remove(file->param_name); f = fopen(file->param_name, "wb"); } if (len) { fwrite(buffer, 1, len, f); } if (len < magi_file_callback_portion_max) { fclose(f); f = 0; } } } void response_request(struct magi_request * req, struct magi_response * res) { magi_response_content_type(res, magi_xhtml); magi_response_content( res, "" "" "Upload File" "" "
" "" "" "" "
" "" ""); struct magi_field * name = magi_field_list_get(req->fields, "name"); struct magi_field * data = magi_field_list_get(req->fields, "data"); if (name && name->data && data) { rename("data", name->data); } } int main(int argc, char const * argv[]) { struct magi_request request; if (magi_cgi(&request, tempfile_callback, 0, 0)) { struct magi_response response; response_request(&request, &response); magi_cgi_response(&response); magi_response_destroy(); } else { magi_cgi_error(request.error); } magi_request_destroy(&request); return 0; }