From 448de6a9c62dd39937cca994929bca84004db7e4 Mon Sep 17 00:00:00 2001 From: yhirose Date: Thu, 28 Nov 2019 18:51:05 -0500 Subject: [PATCH] Added upload example --- example/Makefile | 7 +++++-- example/upload.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 example/upload.cc diff --git a/example/Makefile b/example/Makefile index ed67daebec..28cea040d3 100644 --- a/example/Makefile +++ b/example/Makefile @@ -5,7 +5,7 @@ OPENSSL_DIR = /usr/local/opt/openssl OPENSSL_SUPPORT = -DCPPHTTPLIB_OPENSSL_SUPPORT -I$(OPENSSL_DIR)/include -L$(OPENSSL_DIR)/lib -lssl -lcrypto ZLIB_SUPPORT = -DCPPHTTPLIB_ZLIB_SUPPORT -lz -all: server client hello simplesvr redirect benchmark +all: server client hello simplesvr upload redirect benchmark server : server.cc ../httplib.h Makefile $(CXX) -o server $(CXXFLAGS) server.cc $(OPENSSL_SUPPORT) $(ZLIB_SUPPORT) @@ -19,6 +19,9 @@ hello : hello.cc ../httplib.h Makefile simplesvr : simplesvr.cc ../httplib.h Makefile $(CXX) -o simplesvr $(CXXFLAGS) simplesvr.cc $(OPENSSL_SUPPORT) $(ZLIB_SUPPORT) +upload : upload.cc ../httplib.h Makefile + $(CXX) -o upload $(CXXFLAGS) upload.cc $(OPENSSL_SUPPORT) $(ZLIB_SUPPORT) + redirect : redirect.cc ../httplib.h Makefile $(CXX) -o redirect $(CXXFLAGS) redirect.cc $(OPENSSL_SUPPORT) $(ZLIB_SUPPORT) @@ -30,4 +33,4 @@ pem: openssl req -new -key key.pem | openssl x509 -days 3650 -req -signkey key.pem > cert.pem clean: - rm server client hello simplesvr redirect *.pem + rm server client hello simplesvr upload redirect *.pem diff --git a/example/upload.cc b/example/upload.cc new file mode 100644 index 0000000000..0ad9290532 --- /dev/null +++ b/example/upload.cc @@ -0,0 +1,49 @@ +// +// upload.cc +// +// Copyright (c) 2019 Yuji Hirose. All rights reserved. +// MIT License +// + +#include +#include +#include +using namespace httplib; +using namespace std; + +const char* html = R"( +
+ + +
+ +)"; + +int main(void) { + Server svr; + + svr.Get("/", [](const Request & /*req*/, Response &res) { + res.set_content(html, "text/html"); + }); + + svr.Post("/post", [](const Request & req, Response &res) { + auto file = req.get_file_value("file"); + cout << "file: " << file.offset << ":" << file.length << ":" << file.filename << endl; + + ofstream ofs(file.filename, ios::binary); + ofs << req.body.substr(file.offset, file.length); + + res.set_content("done", "text/plain"); + }); + + svr.listen("localhost", 1234); +}