12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //
- // upload.cc
- //
- // Copyright (c) 2019 Yuji Hirose. All rights reserved.
- // MIT License
- //
- #include <fstream>
- #include <httplib.h>
- #include <iostream>
- using namespace httplib;
- using namespace std;
- const char *html = R"(
- <form id="formElem">
- <input type="file" name="image_file" accept="image/*">
- <input type="file" name="text_file" accept="text/*">
- <input type="submit">
- </form>
- <script>
- formElem.onsubmit = async (e) => {
- e.preventDefault();
- let res = await fetch('/post', {
- method: 'POST',
- body: new FormData(formElem)
- });
- console.log(await res.text());
- };
- </script>
- )";
- 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 image_file = req.get_file_value("image_file");
- auto text_file = req.get_file_value("text_file");
- cout << "image file length: " << image_file.content.length() << endl
- << "image file name: " << image_file.filename << endl
- << "text file length: " << text_file.content.length() << endl
- << "text file name: " << text_file.filename << endl;
- {
- ofstream ofs(image_file.filename, ios::binary);
- ofs << image_file.content;
- }
- {
- ofstream ofs(text_file.filename);
- ofs << text_file.content;
- }
- res.set_content("done", "text/plain");
- });
- svr.listen("localhost", 1234);
- }
|