From ecff988a292e878b50d33003f52111a9639378fb Mon Sep 17 00:00:00 2001 From: cottongin Date: Sat, 24 Jan 2026 13:05:01 -0500 Subject: [PATCH] add basic file management to web server --- src/network/CrossPointWebServer.cpp | 484 ++++++++++++++++++- src/network/CrossPointWebServer.h | 9 +- src/network/html/FilesPage.html | 692 ++++++++++++++++++++++++++-- 3 files changed, 1133 insertions(+), 52 deletions(-) diff --git a/src/network/CrossPointWebServer.cpp b/src/network/CrossPointWebServer.cpp index e41889a..01e1e48 100644 --- a/src/network/CrossPointWebServer.cpp +++ b/src/network/CrossPointWebServer.cpp @@ -115,6 +115,15 @@ void CrossPointWebServer::begin() { // Download endpoint server->on("/download", HTTP_GET, [this] { handleDownload(); }); + // Rename endpoint + server->on("/rename", HTTP_POST, [this] { handleRename(); }); + + // Copy endpoint + server->on("/copy", HTTP_POST, [this] { handleCopy(); }); + + // Move endpoint + server->on("/move", HTTP_POST, [this] { handleMove(); }); + server->onNotFound([this] { handleNotFound(); }); Serial.printf("[%lu] [WEB] [MEM] Free heap after route setup: %d bytes\n", millis(), ESP.getFreeHeap()); @@ -239,7 +248,8 @@ void CrossPointWebServer::handleStatus() const { server->send(200, "application/json", json); } -void CrossPointWebServer::scanFiles(const char* path, const std::function& callback) const { +void CrossPointWebServer::scanFiles(const char* path, const std::function& callback, + bool showHidden) const { FsFile root = SdMan.open(path); if (!root) { Serial.printf("[%lu] [WEB] Failed to open directory: %s\n", millis(), path); @@ -252,7 +262,7 @@ void CrossPointWebServer::scanFiles(const char* path, const std::function