1.client.c
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include "httplib.h"
using namespace std;
using namespace httplib;
int main()
{
    Client cli("http://localhost:1234");
    ifstream fin("./1.txt", ios::binary);
    ostringstream os;
    os << fin.rdbuf();
    string content = os.str();
    cout << content.length() << endl;
    fin.close();
    httplib::MultipartFormDataItems items = {
        {"file", content, "2.txt", "application/octet-stream"}
    };
    auto res = cli.Post("/post", items);
    cout << res->body << endl;
    return 0;
}
2.server.c
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include "httplib.h"
using namespace std;
using namespace httplib;
int main()
{
    Server svr;
    svr.Post("/post", [](const Request &req, Response &res){
        auto file = req.get_file_value("file");
        char result[256];
        cout << "file name: " << file.filename << endl;
        cout << "file length: " << file.content.length() << endl;
        {
            ofstream ofs(file.filename, ios::binary);
            ofs << file.content;
        }
        sprintf(result, "{ \"code\": 0, \"msg\": \"ok\", \"data\": %d }", (int)file.content.length());
        res.set_content(result, "text/plain");
    });
    svr.listen("localhost", 1234);
    return 0;
}
3.编译源码
$ g++ -o client client.c -std=c++11
$ g++ -o server server.cpp -std=c++11 -lpthread
4.运行及其结果
$ ./server
$ ./client
10
{ "code": 0, "msg": "ok", "data": 10 }
网友评论