Webserver Error: "this" was not caputed for this lamda function

Mein Ziel ist es über den Webserver einen Fileupload zu realisieren. Dadurch das nur ein Client verbunden ist habe ich den AsyncWebserver nicht verwendet.

Die Zeile : HTTPUpload &upload = web_Server->upload(); führt bei mir immer zu einem Crash vom ESP wodurch ich mich durch viele Tutorials gelesen habe (wenn mal kein Async verwendet worden ist)

Kommen wir zu meinem Problem:

In vielen Tutorials wird empfohlen, beim Webserver.on direkt einen Responsecode zu senden. Dadurch das ich mit eigenen Libraries arbeite, habe ich in der Library einen Pointer zu meinem Webserver erstellt.

Die Zeile:

web_Server->on("/uploadtrack", HTTP_POST, std::bind(&WebServerProvider::handle_uploadFile, this));

funktioniert jedoch möchte ich noch meinen Responsecode einbauen.

Die Zeile

web_Server->on("/uploadtrack", HTTP_POST, []() {web_Server->send(200,"text/plain","");}, std::bind(&WebServerProvider::handle_uploadFile, this));

wirft mir leider folgenden Fehler:

lib/Wifi/WebServerProviderMain.cpp:56:53: error: 'this' was not captured for this lambda function
web_Server->on("/uploadtrack", HTTP_POST, {web_Server->send(200,"text/plain","");}, std::bind(&WebServerProvider::handle_uploadFile, this));

In der Methode handle_Uploadfile am Anfang ein web_Server->send(200); zu senden ändert leider nichts am Problem.

Entweder liegt es wirklich an der on Zeile das mein Upload nicht funktioniert oder ich habe ein ganz anderes Problem.

Der Htmlcode für den Datei-Upload sieht wie folgt aus:

<form action='/uploadtrack' method='post' enctypes="multipart/form-data" ><input type="file" name="data" /><input type='submit' value='Datei hochladen' class="settingbutton"></form>

Mein code für die Verarbeitung sieht wie folgt aus:

log_i("Starte Upload");

  web_Server->send(200);

  HTTPUpload &upload = web_Server->upload();

  log_i("Upload gestartet");

  if (upload.status == UPLOAD_FILE_START) ------ Hier Crasht der ESP

  {

    log_i("Status Start");

    String filename = upload.filename;

Schau Dir mal den Spiffstab bei Fips an. ZUm Verständnis Einleitung zu Fips

Gruß Tommy

Mein Ziel ist das speichern der Datei auf einer SD Karte wodurch ich SPIFF nicht brauche.

Das Problem bei mir ist ja die Verarbeitung des Fileuploads:
upload.status == UPLOAD_FILE_START

Das Dokumentenhandling würde ja erst später kommen oder sehe ich etwas falsch?

Hab mir den Link einmal angeschaut und meinen Code angepasst. Die Zeile lautet nun:

web_Server->on("/uploadtrack", HTTP_POST, std::bind(&WebServerProvider::handle_response, this), std::bind(&WebServerProvider::handle_uploadFile, this));

In Handleresponse habe ich bereits .send(200) und das aus dem Artikel ausprobiert. Leider funktioniert beides nicht.

Der Code in handle_uploadFile wird komplett ignoriert und nicht ausgeführt.