summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/mongoose/examples/file_upload/file_upload.c
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-01-10 13:30:30 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-01-10 13:30:30 +0100
commit8556d0cdf7058be2c519bd4d8e7006ea9e913527 (patch)
tree09594058dc17564b4ff3c106581d0856cf69c2d5 /3rdparty/mongoose/examples/file_upload/file_upload.c
parent61f7cd05dfed932dd1be927608a4989c187cc737 (diff)
Added integral source of mongoose (nw)
Diffstat (limited to '3rdparty/mongoose/examples/file_upload/file_upload.c')
-rw-r--r--3rdparty/mongoose/examples/file_upload/file_upload.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/3rdparty/mongoose/examples/file_upload/file_upload.c b/3rdparty/mongoose/examples/file_upload/file_upload.c
new file mode 100644
index 00000000000..f0c6a1a4238
--- /dev/null
+++ b/3rdparty/mongoose/examples/file_upload/file_upload.c
@@ -0,0 +1,59 @@
+// Copyright (c) 2004-2012 Sergey Lyubka
+// This file is a part of mongoose project, http://github.com/valenok/mongoose
+
+#include <stdio.h>
+#include <string.h>
+#include "mongoose.h"
+
+static int send_index_page(struct mg_connection *conn) {
+ const char *data;
+ int data_len, ofs = 0;
+ char var_name[100], file_name[100];
+
+ mg_printf_data(conn, "%s",
+ "<html><body>Upload example."
+ "<form method=\"POST\" action=\"/handle_post_request\" "
+ " enctype=\"multipart/form-data\">"
+ "<input type=\"file\" name=\"file\" /> <br/>"
+ "<input type=\"submit\" value=\"Upload\" />"
+ "</form>");
+
+ while ((ofs = mg_parse_multipart(conn->content + ofs, conn->content_len - ofs,
+ var_name, sizeof(var_name),
+ file_name, sizeof(file_name),
+ &data, &data_len)) > 0) {
+ mg_printf_data(conn, "var: %s, file_name: %s, size: %d bytes<br>",
+ var_name, file_name, data_len);
+ }
+
+ mg_printf_data(conn, "%s", "</body></html>");
+
+ return MG_TRUE;
+}
+
+static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
+ switch (ev) {
+ case MG_AUTH: return MG_TRUE;
+ case MG_REQUEST: return send_index_page(conn);
+ default: return MG_FALSE;
+ }
+}
+
+int main(void) {
+ struct mg_server *server;
+
+ // Create and configure the server
+ server = mg_create_server(NULL, ev_handler);
+ mg_set_option(server, "listening_port", "8080");
+
+ // Serve request. Hit Ctrl-C to terminate the program
+ printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
+ for (;;) {
+ mg_poll_server(server, 1000);
+ }
+
+ // Cleanup, and free server instance
+ mg_destroy_server(&server);
+
+ return 0;
+}