ESP32-Web-Server编程-通过 Web 下载文本
概述
当你希望通过网页导出设备的数据时,可以在 ESP32 上部署一个简单的文件 Web 服务器。
需求及功能解析
本节演示如何在 ESP32 上部署一个最简单的 Web 服务器,来接收浏览器或者 wget
指令请求文件数据。
示例解析
目录结构
├── CMakeLists.txt
├── main
│ ├── CMakeLists.txt
│ └── main.c User application
└── README.md This is the file you are currently reading
- 目录结构主要包含主目录 main。
前端代码
该示例非常简单,不需要前端文件。
后端代码
后端代码建立了一个 URL 为 /record 的 bin_get_handler()
,当用户访问该 URL 时,将执行该 handler 函数:
httpd_uri_t record_file_uri = {
.uri = "/record",
.method = HTTP_GET,
.handler = bin_get_handler,
.user_ctx = NULL
};
在 bin_get_handler()
中,将数组中的数据发送到浏览器,并并命为 record.bin
:
char data_buf[] = {0x00, 0x01, 0x02, 0x03};
httpd_resp_set_type(req, "application/octet-stream");
httpd_resp_set_hdr(req, "Content-Disposition", "inline; filename=record.bin"); // default name is record.bin
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
if (res == ESP_OK) {
res = httpd_resp_send_chunk(req, (const char *)data_buf, sizeof(data_buf)/sizeof(char));
示例效果
在网页建立后,输入类似 http://192.168.47.100/record
的网址,将自动下载数据内容为 record.bin:
讨论
1)通过网页下载设备上的数据,这种无前端文件的 Web 服务器非常有用。相比串口、这种下载速度快,使用更便捷。
总结
1)本节主要是介绍通过 ESP32 Web Server 实现在网页端下载设备上的数据为一个文件。
资源链接
1)ESP32-Web-Server ESP-IDF系列博客介绍
2)对应示例的 code 链接 (点击直达代码仓库)
3)下一篇:
(码字不易感谢点赞或收藏)