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;