esp8266 do czego służy "/upload"
/upload na ESP8266 to nazwa endpointu HTTP definiowanego w Twoim programie. Kluczowe punkty
• Upload zasobów WWW, plików konfiguracyjnych, certyfikatów.
• Aktualizacja oprogramowania Over-The-Air (HTTP OTA).
• Nie jest to funkcja „wbudowana” w ESP8266 – endpoint trzeba zadeklarować w kodzie serwera HTTP.
1.1 System plików
ESP8266 udostępnia część pamięci flash jako SPIFFS (przestarzałe) lub LittleFS (zalecane). Pozwala to przechowywać pliki oddzielnie od firmware.
1.2 Serwer HTTP
Biblioteka ESP8266WebServer lub ESPAsyncWebServer umożliwia zarejestrowanie handlerów dla wybranych ścieżek. Przykład:
server.on("/upload", HTTP_POST, [](){ server.send(200, "text/plain", "OK"); },
handleFileUpload);
1.3 Mechanizm przesyłania
• Klient (przeglądarka, skrypt curl itp.) wysyła żądanie POST /upload z nagłówkiem Content-Type: multipart/form-data.
• Handler odbiera porcjami bufor (upload.buf), zapisując go strumieniowo do flash (mała RAM!).
• Po zakończeniu zapisu pliku zwracany jest kod 200 lub przekierowanie.
1.4 OTA (Over-The-Air)
Plik .bin z nowym firmware może być zapisany bezpośrednio do partycji OTA przy użyciu biblioteki Update lub gotowego modułu ESP8266HTTPUpdateServer:
ESP8266HTTPUpdateServer httpUpdater;
httpUpdater.setup(&server, "/upload", "admin", "haslo");
Tu ta sama nazwa /upload odnosi się do uploadu firmware, a nie pliku w LittleFS.
2.1 Zarządzanie zasobami WWW
Aktualizacja plików HTML/CSS/JS bez rekompilacji projektu.
2.2 Dane konfiguracyjne w JSON / XML – urządzenie można rekonfigurować w terenie.
2.3 Certyfikaty TLS – wymiana wygasłego certyfikatu bez ruszania kodu.
2.4 Firmware OTA – typowe w projektach produkcyjnych IoT wymagających serwisowania bez demontażu sprzętu.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <LittleFS.h>
ESP8266WebServer server(80);
File uploadFile;
void handleUpload() {
HTTPUpload &u = server.upload();
if (u.status == UPLOAD_FILE_START) {
String path = "/" + u.filename;
if (LittleFS.exists(path)) LittleFS.remove(path);
uploadFile = LittleFS.open(path, "w");
} else if (u.status == UPLOAD_FILE_WRITE) {
if (uploadFile) uploadFile.write(u.buf, u.currentSize);
} else if (u.status == UPLOAD_FILE_END) {
if (uploadFile) uploadFile.close();
Serial.printf("Plik %s zapisany, %u B\n", u.filename.c_str(), u.totalSize);
}
}
void setup() {
WiFi.begin("SSID","PWD");
LittleFS.begin();
server.on("/upload", HTTP_POST, [](){ server.send(200); }, handleUpload);
server.begin();
}
pio run --target uploadfs, VS Code GUI LittleFS Uploader, a Arduino IDE 2.x ma wbudowany kreator. Porównanie funkcji
• /upload – nazwa umowna; można użyć /file, /update, /ota.
• espota.py (narzędzie Espressif) używa portu TCP 3232, a nie HTTP.
• Firmware OTA wymaga podwójnej partycji lub trybu „sketch + SPIFFS” przy wystarczającej wielkości flash (≥ 1 MB).
server.setContentLengthMax();. ESP.restart(); i sprawdź ESP.getResetReason() przy starcie. .gz). Endpoint /upload w projektach ESP8266 jest programistycznie definiowanym adresem URL, który umożliwia:
Poprawne zaimplementowanie wymaga obsługi strumieniowej, kontroli pamięci, zabezpieczenia hasłem/HTTPS oraz testów integralności. Dzięki temu urządzenia IoT stają się łatwiejsze w utrzymaniu i aktualizacji, nawet gdy są zamontowane w trudno dostępnych miejscach.