file_upload.c
Go to the documentation of this file.
1 // Copyright (c) 2004-2012 Sergey Lyubka
2 // This file is a part of mongoose project, http://github.com/valenok/mongoose
3 
4 #include <stdio.h>
5 #include <string.h>
6 #include "mongoose.h"
7 
8 static int send_index_page(struct mg_connection *conn) {
9  const char *data;
10  int data_len, ofs = 0;
11  char var_name[100], file_name[100];
12 
13  mg_printf_data(conn, "%s",
14  "<html><body>Upload example."
15  "<form method=\"POST\" action=\"/handle_post_request\" "
16  " enctype=\"multipart/form-data\">"
17  "<input type=\"file\" name=\"file1\" /> <br/>"
18  "<input type=\"file\" name=\"file2\" /> <br/>"
19  "<input type=\"submit\" value=\"Upload\" />"
20  "</form>");
21 
22  while ((ofs = mg_parse_multipart(conn->content + ofs, conn->content_len - ofs,
23  var_name, sizeof(var_name),
24  file_name, sizeof(file_name),
25  &data, &data_len)) > 0) {
26  mg_printf_data(conn, "var: %s, file_name: %s, size: %d bytes<br>",
27  var_name, file_name, data_len);
28  }
29 
30  mg_printf_data(conn, "%s", "</body></html>");
31 
32  return MG_TRUE;
33 }
34 
35 static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
36  switch (ev) {
37  case MG_AUTH: return MG_TRUE;
38  case MG_REQUEST: return send_index_page(conn);
39  default: return MG_FALSE;
40  }
41 }
42 
43 int main(void) {
44  struct mg_server *server;
45 
46  // Create and configure the server
47  server = mg_create_server(NULL, ev_handler);
48  mg_set_option(server, "listening_port", "8080");
49 
50  // Serve request. Hit Ctrl-C to terminate the program
51  printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
52  for (;;) {
53  mg_poll_server(server, 1000);
54  }
55 
56  // Cleanup, and free server instance
57  mg_destroy_server(&server);
58 
59  return 0;
60 }
static int send_index_page(struct mg_connection *conn)
Definition: file_upload.c:8
struct mg_server * mg_create_server(void *server_data, mg_handler_t handler)
Definition: mongoose.c:5431
const char * mg_get_option(const struct mg_server *server, const char *name)
Definition: mongoose.c:5425
time_t mg_poll_server(struct mg_server *server, int milliseconds)
Definition: mongoose.c:4965
size_t mg_printf_data(struct mg_connection *c, const char *fmt,...)
Definition: mongoose.c:2785
#define printf
Definition: curl_printf.h:40
static int ev_handler(struct mg_connection *conn, enum mg_event ev)
Definition: file_upload.c:35
UNITTEST_START struct Curl_easy data
Definition: unit1399.c:82
mg_event
Definition: mongoose.h:62
static struct mg_server * server
Definition: web_server.c:72
const char * mg_set_option(struct mg_server *server, const char *name, const char *value)
Definition: mongoose.c:5143
int main(void)
Definition: file_upload.c:43
int mg_parse_multipart(const char *buf, int buf_len, char *var_name, int var_name_len, char *file_name, int file_name_len, const char **data, int *data_len)
Definition: mongoose.c:5056
void mg_destroy_server(struct mg_server **server)
Definition: mongoose.c:4969
size_t content_len
Definition: mongoose.h:50
char * content
Definition: mongoose.h:49


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:09