基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

这篇具有很好参考价值的文章主要介绍了基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前文中:ESP32的web服务器(内嵌HTML)_你的幻境的博客-CSDN博客 已经实现建立了一个WEB服务器了,但是页面的HTML代码是镶嵌在C语言代码中的,大部份情况下,不管是调试或者使用都是很不方便的。但是ESP32的SPIFFS提供了很好的解决方法,SPIFFS相当于ESP32中的一个硬盘分区,每种版本的ESP32中SPIFFS分区的大小可能会有各区别,如果需要存储的文件过大,需要先了解清楚自已的ESP32版本,或者找店家了解一下该分区的大小。本文中只做一个简单的了解和使用,文件不会过大,各种版本的ESP32应该都可以用来测试。

首先,我们需要一个html文件(index.html),文件需要保存在项目文件夹内的"data"文件夹内,原因后面会说明,文件内容还是使用前文中的代码并加入了对mystyle.css的引用:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    <title>EPS32教程</title>
  </head>
  <body>
    <h1>ESP32 HTML 标题</h1>
    <p>ESP32 HTML 段落</p>
  </body>
</html>

 然后新建一个CSS文件(mystyle.css):

p{
	background-color:red;
}

 然后,我们需要把文件烧录到ESP32的SPIFFS分区中,需要烧录文件,先要在arduion IDE中安装一个插件(ESP32FS),该插件的项目地址在:
https://github.com/me-no-dev/arduino-esp32fs-plugin


找到releases page下载这个插件。

基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

 

基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

点击下载ESP32FS-1.1.zip

解压缩该插件到arduino IDE安装文件夹下的tools文件夹,在win系统下,文件位置:<Program_Files_dir>/Arduino/tools/ESP32FS/tool/esp32fs.jar
重启arduino IDE在菜单=>工具 下会出现新的选项菜单:ESP32 Sketch Data Upload
基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

 点击后,该插件会把前面提到的"data"文件夹内的所有文件上传到SPIFFS分区。
上传之前,一定要注意先把"串口监视器"关闭,关闭对上传端口的占用。
上传完成会输出提示信息:
基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

 至此,文件就上传至SPIFFS分区

要使用ESP32的SPIFFS,要先引入SPIFFS.h,在arduion IDE中,如果已经搭建好ESP32环境,默认是自带这个库的。

 同时需要做的是引入WiFi.h和ESPAsyncWebServer.h这两个库

#include <WiFi.h>
#include <SPIFFS.h>
#include "ESPAsyncWebServer.h"

ESPAsyncWebServer库中,send()结构体提供了直接读取SPIFFS中文件的方法。
首先需要对SPIFFS进行初始化,为了方便理解,还是和之前一样把一些功能做成函数:

void call_back(AsyncWebServerRequest *request){
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  request->send(SPIFFS,"/index.html");
}

 用该函数把前文的回调函数替换,首先该函数会用SPIFFS.begin(true)尝试初始化SPIFFS,如果初始化失败,在串口监视器输出错误信息并返回。如果初始化成功就会运行send()结构体,把index.html文件以"text/html"的方式发送给浏览器。
完整代码:

#include <WiFi.h>
#include <SPIFFS.h>
#include "ESPAsyncWebServer.h"


AsyncWebServer server(80);

//连接WIFI
void connect_wifi(){
  const char* wifi_ssid = "ESP32";
  const char* wifi_password = "12345678";
  Serial.begin(9600);
  WiFi.begin(wifi_ssid, wifi_password);         //连接WIFI
  Serial.print("Connected");
  //循环,直到连接成功
  while(WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  IPAddress local_IP = WiFi.localIP();
  Serial.print("WIFI is connected,The local IP address is "); //连接成功提示
  Serial.println(local_IP); 
}

void call_back(AsyncWebServerRequest *request){
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  request->send(SPIFFS,"/index.html");        //发送html文件内容
}

void web_server(){
  server.on("/",HTTP_GET,call_back);    //注册回调函数
  server.begin();                       //初始化
}

void setup() {
  connect_wifi();
  web_server();
}

void loop() {

}

基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

可以看到,虽然在html文件中加入了对CSS文件的引用,但并未实现应该有的效果,因为利用send()结构体的方法可以实现发送html代码,但该方法并不支持引入如CSS,JavaScript文件,ESPAsyncWebServer提供了另一个方法.serveStatic()和.setDefaultFile()来实现。

把该方法替换之前代码中的.on()方法,并删除回调函数call_back():

void web_server(){
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
  server.begin();                       //初始化
}

完整代码:

#include <WiFi.h>
#include <SPIFFS.h>
#include "ESPAsyncWebServer.h"


AsyncWebServer server(80);

//连接WIFI
void connect_wifi(){
  const char* wifi_ssid = "ESP32";
  const char* wifi_password = "12345678";
  Serial.begin(9600);
  WiFi.begin(wifi_ssid, wifi_password);         //连接WIFI
  Serial.print("Connected");
  //循环,直到连接成功
  while(WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  IPAddress local_IP = WiFi.localIP();
  Serial.print("WIFI is connected,The local IP address is "); //连接成功提示
  Serial.println(local_IP); 
}

void web_server(){
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
  server.begin();                       //初始化
}

void setup() {
  connect_wifi();
  web_server();
}

void loop() {

}

基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)

在之后的文章中,将介绍另一种更高效的(LittleFS)文件系统的详细使用方法文章来源地址https://www.toymoban.com/news/detail-434600.html

到了这里,关于基于ESP32搭建物联网服务器六(利用SPIFFS存放html,css,js等文件(读取html)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • STM32--ESP8266物联网WIFI模块(贝壳物联)--温湿度数据上传服务器显示

    STM32--ESP8266物联网WIFI模块(贝壳物联)--温湿度数据上传服务器显示

    本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接 一、简介 随着移动物联网的发展,各场景下对于物联控制、数据上传、远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块——ESP8266,话不多少我们先来看看这个神奇的模

    2024年02月08日
    浏览(19)
  • ESP32系列四:搭建http的webserver的服务器

    最近在使用ESP32搭建web服务器测试,发现esp32搭建这类开发环境还是比较方便的。具体的http协议这里就不再赘述,我们主要说一下如何使用ESP32提供的API来搭建我们的http web。 一、web服务器搭建过程 1、配置web服务器 在ESP-IDF中,Web服务器使用httpd组件实现。我们需要先创建ht

    2024年03月21日
    浏览(6)
  • 基于ESP32的简易web服务器

    基于ESP32的简易web服务器

    本文介绍一下如何使用ESP32快速方便的搭建一个简易的web服务器。 使用ESP32或ESP8266搭建web服务器的方式有很多,但是大多数都的web页面代码都是内嵌在程序中的,这样如果要修改web页面就十分的不方便。今天介绍一种方法将web页面的代码以文件的形式上传到存储器中,然后在

    2024年02月09日
    浏览(11)
  • 基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

    基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

    电子邮件在全球范围内被用作数字通信的重要组成部分。电子邮件主要用于官方通信目的,因为它最方便、成本效益高、保存记录、覆盖全球且环保。电子邮件是一种非常快捷的通信方式,只是您需要稳定的互联网连接。 在这个项目中,我们将使用ESP32开发板发送电子邮件(

    2024年02月07日
    浏览(108)
  • 基于esp32-cam模块的监控,并自动拍照保存置服务器

    基于esp32-cam模块的监控,并自动拍照保存置服务器

    推荐esp教程网站:esp教程网站 ,纯英文,需魔法上网。         Arduino官网:Software | Arduino         建议下载1.8.x版本,不推荐下载2.x版本,1.8.x版本可以使用插件,但是2.x版本有代码补充。         点击后,会弹出两个网页,都选择 JUST DOWNLOAD 。 ​         安装

    2024年04月16日
    浏览(5)
  • 基于 ESP32 创建 HTTP Server 服务器,支持载入文件到服务器,并对载入文件进行删除管理

    基于 ESP32 创建 HTTP Server 服务器,支持载入文件到服务器,并对载入文件进行删除管理

    软件编程指南参见:HTTP 服务器 任意一款 ESP32 系列开发板 2.4GHz 路由器热点 准备各种格式的文件 可基于 esp-idf/examples/protocols/http_server /file_serving 例程进行测试 只需要设置 ESP32 连接的 2.4GHz 的 WiFi 热点 即可 menuconfig — Example Connection Configuration — WiFi SSID — WiFi Password 下载固件

    2024年02月16日
    浏览(15)
  • 使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分

    使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分

    microdot文档速查 什么是Microdot?Microdot是一个可以在micropython中搭建物联网web服务器的框架 micropyton文档api速查 Quick reference for the ESP32 演示视频链接 视频中我们简单的实现了 使用esp32搭建web服务器 实现get请求 上传网页到服务器 手机打开网址访问该网页 服务器处理请求,实现开

    2024年02月08日
    浏览(13)
  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(15)
  • 基于STM32F103,利用W5500芯片实现TCP客户端连接TCP服务器的实践

    尊敬的读者,您好!在这篇文章中,我们将一起深入了解如何使用STM32F103和W5500芯片,实现TCP客户端连接到TCP服务器的过程。在详细的步骤中,我们不仅会给出相关的理论介绍,同时也会提供实战代码以供大家参考和学习。希望大家在阅读完这篇文章后,能够有所收获。 实战

    2024年02月11日
    浏览(8)
  • 关于LWIP用法之HTTPD:基于STM32F4搭建web服务器

    关于LWIP用法之HTTPD:基于STM32F4搭建web服务器

    一,STM32CUBEMX配置(使用的是6.4.0版本) 前提是在配置好LWIP的情况下(能ping通你的开发板),使能HTTPD功能。 然后是使能LWIP_HTTPD_CGI, 使能:LWIP_HTTPD_SUPPORT_POST(), 使能 :HTTPD_USE_CUSTOM_FSDATA。 会发现fs.c这个文件的#include HTTPD_FSDATA_FILE,这一句编译报错,解决办法:1) 在KEIL中lwipop

    2023年04月08日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包