cpp-httplib實現文件上傳

上面的靜態文件服務實現了文件的下載,下面實現一下文件的上傳upload
參考:examples目錄下的upload.cc

html

#include <httplib.h> #include <iostream> #include <fstream>

using namespace httplib; using namespace std; const char *html = R"(
                   <form id="formElem">
                   <input type="file" name="image_file" accept="image/*"><br>
                   <input type="file" name="text_file" accept="text/*"><br>
                   <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.set_base_dir("./"); /// upload
    svr.Get("/upload", [](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"); }); /// listen
    svr.listen("localhost", 1234); }

 

文件被上傳,服務端接收到請求後將文件數據寫到文件中去。ios

相關文章
相關標籤/搜索