From 3eb1262366936b61b6d1498b0c1e9608f7100a7e Mon Sep 17 00:00:00 2001 From: Miroslav Pivovarsky Date: Fri, 12 Jul 2024 21:56:09 +0200 Subject: [PATCH] changed function for sending big data from WEB server --- ESP32_PrusaConnectCam/WebServer.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ESP32_PrusaConnectCam/WebServer.cpp b/ESP32_PrusaConnectCam/WebServer.cpp index 1f15d6f..a631902 100644 --- a/ESP32_PrusaConnectCam/WebServer.cpp +++ b/ESP32_PrusaConnectCam/WebServer.cpp @@ -1121,8 +1121,20 @@ void Server_resume() { * @param const char* - data */ void Server_handleCacheRequest(AsyncWebServerRequest* request, const char* contentType, const char* data) { + /* AsyncWebServerResponse* response = request->beginResponse(200, contentType, data); response->addHeader("Cache-Control", "public, max-age=" + String(WEB_CACHE_INTERVAL)); + request->send(response); + */ + + AsyncWebServerResponse* response = request->beginChunkedResponse(contentType, [data](uint8_t *buffer, size_t maxLen, size_t index) -> size_t { + const char* dataStart = data + index; // current position in data + size_t dataLeft = strlen(data) - index; // how many bytes are left to send + size_t chunkSize = dataLeft < maxLen ? dataLeft : maxLen; // how many bytes we can send now + memcpy(buffer, dataStart, chunkSize); // copy chunk of data to buffer + return chunkSize; // return chunk size + }); + response->addHeader("Cache-Control", "public, max-age=" + String(WEB_CACHE_INTERVAL)); request->send(response); }