ESP32 FS插件其实只是在当前项目目录下创建了一个data
目录,我们只要将需要上传到芯片文件系统的内容放置在这个 data
目录中就可以了,然后点击ESP8266 Skech Data Upload
Arduino IDE就会将这个目录的文件写入到SPIFFS中了。要注意的是文件的大小不能超过板子SPIFFS的大小,否则会上传失败。
我们就尝试将一个index.html
网页文件放到data
目录,然后将其上传到ESP32中,接下来用以下的代码将SPIFFS中的index.html
读出来:
目录结构如下
使用演示
这里以使用SPIFFS作为文件系统进行静态文件服务功能演示,首先准备几个文件。将下面文本保存为名为index.html的文件:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>ServeStatic Test</title>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<p>这是静态文件服务测试</p>
<p>本页面的背景颜色是由mystyle.css文件提供的</p>
<p>本页面引用了mystyle.css文件,浏览器在解析时会自动向服务器请求该文件</p>
</body>
</html>
将下面文本保存为名为mystyle.css的文件:
body {
background-color: gray;
}
SPIFFS芯片文件系统
上传方式:
①首次使用
上传文件用到的工具项目地址如下:
https://github.com/me-no-dev/arduino-esp32fs-plugin
从项目地址下载Release版本压缩包,将其解压到Arduino安装文件夹tools文件夹下,最终文件路径为: .../Arduino/tools/ESP32FS/tool/esp32fs.jar
。重启Arduino IDE后就可以在菜单中看到选项。
ESP8266上传文件到SPIFFS的工具项目地址如下:
https://github.com/esp8266/arduino-esp8266fs-plugin
②打开工具选择 ESP32 SKetch Data Upload 上传SPIFFS芯片文件系统 ,也就是目录data下的index.html和mystyle.css。
上传成功打印信息
③在Arduino中使用下面代码:
#include <WiFi.h>
#include <SPIFFS.h>
#include <ESPAsyncWebServer.h> //引入相应库
const char *ssid = "";
const char *password = "";
AsyncWebServer server(80); //声明WebServer对象
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
WiFi.setSleep(false);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Connected");
Serial.print("IP Address:");
Serial.println(WiFi.localIP());
SPIFFS.begin(true); //挂载SPIFFS,如果挂载失败则格式化生成SPIFFS,格式化时间较长
//当然上面begin中不填true格式化也行,下面演示中用工具上传文件时会自动生成SPIFFS
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
server.begin(); //启动服务器
Serial.println("Web server started");
}
void loop(){}