cpp实现从cpp-httplib server获取本地文件
时间: 2024-10-25 07:16:34 浏览: 46
在C++中,你可以使用cpp-httplib库来作为HTTP服务器,然后通过发送GET请求从这个服务器下载本地文件。以下是基本步骤:
1. 首先,确保你已经安装了cpp-httplib库。如果没有,可以从GitHub上克隆并添加到项目中:https://github.com/yhirose/cpp-httplib
2. 引入必要的头文件:
```cpp
#include <cpp-httplib.h>
```
3. 定义一个函数来处理HTTP GET请求,该函数将检查请求的目标是否是你想要提供下载的本地文件路径:
```cpp
void download_file(const std::string& filename) {
htp::server my_server(8080); // 设置服务器监听的端口
auto file_path = "path/to/your/local/file.txt"; // 替换为你实际的文件路径
if (httplib::OK == my_server.get("/download", [&](const htp::request& r) -> htp::response {
if (r.uri.path() == "/download" && r.method == htp::Method::GET) {
std::ifstream in(file_path);
if (!in) {
return htp::response(404, "File not found");
}
htp::header headers;
headers["Content-Type"] = "text/plain";
headers["Content-Disposition"] = "attachment; filename=" + filename;
return htp::response(200, "OK", in, headers);
}
return htp::response(httplib::Status::NotImplemented, "Not implemented");
})) {
std::cout << "Server running on port 8080." << std::endl;
} else {
std::cerr << "Failed to start the server: " << my_server.status_message() << std::endl;
}
}
```
4. 启动服务器:
```cpp
int main() {
download_file("file_to_download.txt"); // 调用下载文件函数,并指定文件名
try {
my_server.run();
} catch (std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
阅读全文