HTTPServer: serve static file from the SPIFFS

This commit is contained in:
Thomas Kolb 2019-11-20 22:42:35 +01:00
parent a0c5d5587d
commit fd0d75ee16
2 changed files with 24 additions and 6 deletions

View file

@ -28,6 +28,8 @@ class HTTPServer
static void serverTask(void *arg);
static void serveFile(String filename, httpsserver::HTTPResponse *res);
// handlers
static void handleRoot(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);
static void handleColor(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res);

View file

@ -1,5 +1,7 @@
/* HTTP Server setup and handler functions */
#include <SPIFFS.h>
#include "HTTPServer.h"
#include "Fader.h"
@ -10,14 +12,28 @@ HTTPServer::HTTPServer(void)
m_server = new httpsserver::HTTPServer();
}
void HTTPServer::serveFile(String filename, httpsserver::HTTPResponse *res)
{
uint8_t buf[1024];
File f = SPIFFS.open(filename.c_str(), "r");
size_t nread = 1;
while(nread > 0) {
nread = f.readBytes(reinterpret_cast<char*>(buf), 1024);
if(nread <= 0) {
break;
}
res->write(buf, nread);
}
f.close();
}
void HTTPServer::handleRoot(httpsserver::HTTPRequest *req, httpsserver::HTTPResponse *res)
{
res->setHeader("Content-Type", "text/plain");
res->println("Hello World!");
res->print("Uptime: ");
res->print(millis());
res->println(" ms");
serveFile("/index.html", res);
res->setHeader("Content-Type", "text/html");
}
static void error400(httpsserver::HTTPResponse *res, const std::string &reason)