C++-Web框架:Drogon、Proxygen、Oat++、Crow、C++ REST SDK、Pistache、Silicon、Civetweb、Wt、cinatra

众所周知,C++ 并不是一种流行的 Web 开发语言,究其原因有很多:语言门槛高、使用难度大、开发效率低 … 话虽如此,但随着 Emscripten 的成熟,未来 C++ 在 Web 方面会发挥更大的潜能,尤其是游戏、3D 应用等方面。

1. Drogon

Drogon 是一个基于 C++14/17 的 Http 应用框架,使用 Drogon 可以方便的使用 C++ 构建各种类型的 Web 应用服务端程序。

Star:3.7k
GitHub:https://github.com/an-tao/drogon

2. Proxygen

Proxygen 是 Facebook 开发的一个 C++ 的 HTTP 库,包含一个易用的 HTTP 服务器。支持 HTTP/1.1、SPDY 3 和 SPDY 3.1,同时也开始在为 HTTP/2 做开发。

Star:6.8k
GitHub:https://github.com/facebook/proxygen

3. Oat++

Oat++ 是一个纯 C++ 实现的 Web 开发框架,高性能、简单的 API、跨平台、零依赖。

Star:3.1k
主页:https://oatpp.io/
GitHub:https://github.com/oatpp/oatpp
文档:https://oatpp.io/docs/start/

4. Crow<

  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Drogon框架可以通过HTTP协议接收文件上传。以下是一个简单的示例代码,演示如何使用Drogon框架接收文件上传: ```cpp #include <drogon/HttpController.h> #include <drogon/HttpAppFramework.h> using namespace drogon; using namespace std; class FileUploadController : public drogon::HttpController<FileUploadController> { public: METHOD_LIST_BEGIN ADD_METHOD_TO(FileUploadController::upload, "/upload", HttpMethod::Post) METHOD_LIST_END void upload(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr&)>&& callback) { auto files = req->getUploadedFiles(); for (const auto& file : files) { LOG_DEBUG << "Uploaded file: " << file.getFileName(); // TODO: 保存上传的文件到服务器 } auto resp = HttpResponse::newHttpResponse(); resp->setContentTypeCode(CT_TEXT_HTML); resp->setBody("<html><body><h1>File uploaded successfully!</h1></body></html>"); callback(resp); } }; int main() { auto app = drogon::HttpAppFramework::instance(); app->addListener("0.0.0.0", 8080); app->registerController<FileUploadController>(); app->run(); return 0; } ``` 在以上示例代码中,我们使用了`getUploadedFiles()`方法获取上传的文件列表,然后可以对每个文件进行处理。注意,Drogon框架默认将上传的文件保存到内存中,如果上传的文件比较大,可能会导致内存占用过高。你可以使用`HttpRequest::getUploadFile(const std::string& filename, const std::string& tmpFilePrefix = "drogon")`方法将上传的文件保存到磁盘中,以避免内存占用过高的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值