首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ESP32 8266/ESP32 32上的SPIFFS文件中“查找和替换”字符串?

如何在ESP32 8266/ESP32 32上的SPIFFS文件中“查找和替换”字符串?
EN

Stack Overflow用户
提问于 2018-10-04 10:31:00
回答 2查看 2.5K关注 0票数 1

我正在ESP-32上运行一个小型的web服务器,并让闪存上的HTML文件通过SPIFFS访问它。我有一些状态字段,我想动态地插入到静态HTML文件中。因此,我定义了一些自定义占位符,如{data_recv}{data_sent},这些占位符应该由代码中的字段值替换,然后由web服务器提供给客户端浏览器。

当客户端浏览器请求其中一个HTML页面时,我将使用以下尖峰来读取它们:

代码语言:javascript
复制
  if(SPIFFS.exists(path)) {                             // if the file exists
    File file = SPIFFS.open(path, "r");                 // open it

    // TODO: replace placeholders {data_recv} and {data_sent} with field values ...

    size_t sent = server.streamFile(file, contentType); // and send it to the client
    file.close();                                       // then close the file again
    return true;
  }

如何为File类型实现“查找和替换”函数的一些想法?

具有以下函数签名的内容:

代码语言:javascript
复制
bool findAndReplace(File file, String searchStr, String replaceStr) {
    // implementation ...
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-07 21:25:30

我的建议是,不是重写文件,而是在响应请求时替换值。

与使用server.streamFile(file, contentType)不同,您可以使用一个缓冲区来使用fread(buffer, 1, len, file)读取文件块,替换缓冲区中的模式(棘手的部分是必须跟踪缓冲区末尾的部分匹配),然后将缓冲区发送到客户端。

票数 1
EN

Stack Overflow用户

发布于 2021-10-03 03:05:31

  1. 正如@dandavid在评论中所说,您不需要分析bootstrap.css或其他静态文件。
  2. 您可以拥有一个静态HTML,并通过使用JavaScript:执行XMLHttpRequest查询来更新占位符。因此,您只需实现一个路径,该路径返回带有每个占位符值的JSON。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52644512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档