51 lines
1.0 KiB
C++
51 lines
1.0 KiB
C++
//
|
|
// 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="file" accept="image/*">
|
|
<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 file = req.get_file_value("file");
|
|
cout << "file length: " << file.content.length() << ":" << file.filename
|
|
<< endl;
|
|
|
|
ofstream ofs(file.filename, ios::binary);
|
|
ofs << file.content;
|
|
|
|
res.set_content("done", "text/plain");
|
|
});
|
|
|
|
svr.listen("localhost", 1234);
|
|
}
|