ESP8266上的文件系统-SPIFFS
终于可以不再拼接字符串,而可以直接使用文件系统。
安装FS上传插件
在如下地址下载:
https://github.com/esp8266/arduino-esp8266fs-plugin/releases
将获得的压缩包解压,将ESP8266FS文件夹复制到你的Arduino安装目录的tools文件夹里,重启IDE。
注意:它好像挑版本,我使用1.6.7会报错,使用1.8.5正常上传。
一些说明
1.如何选择我的SPIFFS大小
- 在你的IDE菜单中(工具 > Falsh Size > 4M(1M SPIFFS)),视情况选择大小。(Falsh)一般ESP01为1M大小,ESP12为4M大小。
2.是否有文件限制
- 传,都可以传(只要有空间),点击工具菜单中ESP8266 SKetch Data Upload来上传data中的文件。
3.FS库的文档
使用
在你的项目路径会自动生成(如果没有请手动新建)data文件夹,里面存放你要上传的文件,比方说html,css之类的。
我们放入一个index.html,来试一试:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "FS.h"
const char* ssid = "SSID";
const char* password = "PASSWORD";
ESP8266WebServer server(80);
void Route_Index() {
if(SPIFFS.exists("/index.html")){ //文件存在检测
File f = SPIFFS.open("/index.html", "r");
if(!f){ //异常处理
server.send(500,"text/html","Error on opening!");
}else{
String data = f.readString();
f.close();
server.send(200,"text/html",data);
}
}else{
server.send(404,"text/html","Not found!");
}
}
void setup(void){
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("IP: ");
Serial.print(WiFi.localIP());
server.on("/",Route_Index);
server.begin();
if(!SPIFFS.begin()){ //初始化
Serial.println("File system init failed!");
}
}