fix json OTA upload

This commit is contained in:
proddy
2026-05-12 19:56:17 +02:00
parent ddb2390bf7
commit 2f18bfcce3

View File

@@ -4,7 +4,6 @@
#include <esp_app_format.h> #include <esp_app_format.h>
#include <esp_ota_ops.h> #include <esp_ota_ops.h>
// #include <esp_partition.h>
static String getFilenameExtension(const String & filename) { static String getFilenameExtension(const String & filename) {
const auto pos = filename.lastIndexOf('.'); const auto pos = filename.lastIndexOf('.');
@@ -133,9 +132,10 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri
} }
if (_is_firmware || _is_filesystem) { if (_is_firmware || _is_filesystem) {
if (!request->_tempObject) { // if we haven't delt with an error, continue with the OTA update if (!request->_tempObject) {
//continue with the OTA update
if (Update.write(data, len) != len) { if (Update.write(data, len) != len) {
emsesp::EMSESP::logger().err("Update.write failed at offset %u (chunk %u): %s", emsesp::EMSESP::logger().err("OTA update failed at offset %u (chunk %u): %s",
static_cast<unsigned>(Update.progress()), static_cast<unsigned>(Update.progress()),
static_cast<unsigned>(len), static_cast<unsigned>(len),
Update.errorString()); Update.errorString());
@@ -144,15 +144,16 @@ void UploadFileService::handleUpload(AsyncWebServerRequest * request, const Stri
} }
if (final) { if (final) {
if (!Update.end(true)) { if (!Update.end(true)) {
emsesp::EMSESP::logger().err("Update.end failed: %s", Update.errorString()); emsesp::EMSESP::logger().err("OTA update failed: %s", Update.errorString());
handleError(request, 500); handleError(request, 500); // internal error, failed
return; return;
} }
} }
} else { }
if (len && len != request->_tempFile.write(data, len)) { // stream the incoming chunk to the opened file } else {
handleError(request, 507); // 507-Insufficient Storage // stream the incoming chunk to the opened file
} if (len && len != request->_tempFile.write(data, len)) {
handleError(request, 507); // 507-Insufficient Storage
} }
} }
} }