终于可以不再拼接字符串,而可以直接使用文件系统。

安装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!");
  }
}