From ceb2f1da41d1876132b0753291f57ecf4bee5df8 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <sergey.lyubka@cesanta.com>
Date: Mon, 20 Mar 2017 17:14:39 +0000
Subject: [PATCH] Update upload example

PUBLISHED_FROM=a28c1da3f0dd597792439246313ca39984ab7536
---
 examples/big_upload/big_upload.c              | 61 +++----------------
 .../{ajax_upload_demo => }/index.html         |  9 +++
 2 files changed, 18 insertions(+), 52 deletions(-)
 rename examples/big_upload/{ajax_upload_demo => }/index.html (80%)

diff --git a/examples/big_upload/big_upload.c b/examples/big_upload/big_upload.c
index 5514d7b75..563436503 100644
--- a/examples/big_upload/big_upload.c
+++ b/examples/big_upload/big_upload.c
@@ -17,22 +17,6 @@ struct file_writer_data {
   size_t bytes_written;
 };
 
-static void handle_request(struct mg_connection *nc) {
-  // This handler gets for all endpoints but /upload
-  mg_printf(nc, "%s",
-            "HTTP/1.1 200 OK\r\n"
-            "Content-Type: text/html\r\n"
-            "Connection: close\r\n"
-            "\r\n"
-            "<html><body>Upload example."
-            "<form method=\"POST\" action=\"/upload\" "
-            "  enctype=\"multipart/form-data\">"
-            "<input type=\"file\" name=\"file\" /> <br/>"
-            "<input type=\"submit\" value=\"Upload\" />"
-            "</form></body></html>");
-  nc->flags |= MG_F_SEND_AND_CLOSE;
-}
-
 static void handle_upload(struct mg_connection *nc, int ev, void *p) {
   struct file_writer_data *data = (struct file_writer_data *) nc->user_data;
   struct mg_http_multipart_part *mp = (struct mg_http_multipart_part *) p;
@@ -83,54 +67,27 @@ static void handle_upload(struct mg_connection *nc, int ev, void *p) {
 }
 
 static void ev_handler(struct mg_connection *nc, int ev, void *ev_data) {
-  (void) ev_data;
-  if (ev == MG_EV_HTTP_REQUEST) {
-    mg_printf(nc, "%s",
-              "HTTP/1.1 200 OK\r\n"
-              "Content-Type: text/html\r\n"
-              "Connection: close\r\n"
-              "\r\n"
-              "<html><body>Upload example."
-              "Navigate to <a "
-              "href=\"simple_upload_demo\">/simple_upload_demo</a> for "
-              "uploading using submit "
-              "or to <a href=\"/ajax_upload_demo\">/ajax_upload_demo</a> for "
-              "uploading using ajax"
-              "</form></body></html>");
-    nc->flags |= MG_F_SEND_AND_CLOSE;
-  }
-}
-
-static void upload_demo_handler(struct mg_connection *nc, int ev, void *p) {
   if (ev == MG_EV_HTTP_REQUEST) {
-    (void) p;
-    handle_request(nc);
-  }
-}
-
-static void ajax_demo_handler(struct mg_connection *nc, int ev, void *p) {
-  if (ev == MG_EV_HTTP_REQUEST) {
-    mg_serve_http(nc, (struct http_message *) p, s_http_server_opts);
+    mg_serve_http(nc, ev_data, s_http_server_opts);
   }
 }
 
 int main(void) {
   struct mg_mgr mgr;
-  struct mg_connection *nc;
+  struct mg_connection *c;
 
   mg_mgr_init(&mgr, NULL);
-  nc = mg_bind(&mgr, s_http_port, ev_handler);
+  c = mg_bind(&mgr, s_http_port, ev_handler);
+  if (c == NULL) {
+    fprintf(stderr, "Cannot start server on port %s\n", s_http_port);
+    exit(EXIT_FAILURE);
+  }
 
   s_http_server_opts.document_root = ".";  // Serve current directory
-
-  mg_register_http_endpoint(nc, "/upload", handle_upload MG_UD_ARG(NULL));
-  mg_register_http_endpoint(nc, "/ajax_upload_demo",
-                            ajax_demo_handler MG_UD_ARG(NULL));
-  mg_register_http_endpoint(nc, "/simple_upload_demo",
-                            upload_demo_handler MG_UD_ARG(NULL));
+  mg_register_http_endpoint(c, "/upload", handle_upload MG_UD_ARG(NULL));
 
   // Set up HTTP server parameters
-  mg_set_protocol_http_websocket(nc);
+  mg_set_protocol_http_websocket(c);
 
   printf("Starting web server on port %s\n", s_http_port);
   for (;;) {
diff --git a/examples/big_upload/ajax_upload_demo/index.html b/examples/big_upload/index.html
similarity index 80%
rename from examples/big_upload/ajax_upload_demo/index.html
rename to examples/big_upload/index.html
index 9ba5d63c7..c162c653a 100644
--- a/examples/big_upload/ajax_upload_demo/index.html
+++ b/examples/big_upload/index.html
@@ -35,6 +35,15 @@
 </head>
 
 <body>
+  <h1>Upload file using standard form upload</h1>
+
+  <form method="POST" action="/upload" enctype="multipart/form-data">
+    <label>Select a file:</label><br>
+    <input type="file" name="file" />
+    <input type="submit" value="Upload" />
+  </form>
+
+  <h1>Upload file using Ajax - that also gives progress report</h1>
   <form method="post" id="filename" name="filename" onsubmit="return uploadFile();">
     <label>Select a file:</label><br>
     <input type="file" id="file" name="file" required />
-- 
GitLab