• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Dateiupload funktioniert nicht mit Edge

mrdynalink

New member
Hallo,

ich verwende schon seit längerer Zeit folgende Methode, um Konfigurationsdateien auf einem Webserver zu hinterlegen. Jetzt fiel auf, dass diese Methode nicht mit dem Edge-Browser funktioniert.

Hier der stark vereinfachte Code, der im Firefox und IE funktioniert:
Code:
function upload_test()
{
	// Http-Request-Element erzeugen
	_XhrElem = new XMLHttpRequest();
	
	// Der Inhalt der Datei
	var content = "Dies ist ein Test" ;
	
	var formData = new FormData();
	var blob = new Blob([content], {type: 'plain/text'});
	formData.append('file', blob, "testfile.txt");

	// Datei "hochladen"
	_XhrElem.open('post', "http://192.168.10.1/edit", true);
	_XhrElem.send(formData);				
}
Der Code soll die Datei testfile.txt mit dem Inhalt "Dies ist ein Test" auf dem Webserver erzeugen. Der Webserver nimmt uploads ueber "edit" an. Mit dem Firefox und dem IE funktioniert das einwandfrei, der Edge tut es nicht. Im Edge-Debugger sehe ich unter Netzwerk zwar den POST-Transfer, er wird aber mit 0Byte angezeigt. Wie könnte ich den Edge dazu bewegen, die Datei auf den Webserver hochzuladen ? Ich würde auch jede andere Methode verwenden, Hauptsache ich kann irgendwie eine Datei mit dem Edge zum Webserver hochladen.

Vielen Dank für Tipps
 
Zuletzt bearbeitet von einem Moderator:
Und die Konsole im Edge enthält wirklich keine Meldungen?
Nimmt der Browser denn Kontakt zum Serverscript auf oder klappt das auch schon nicht?
 
Hallo mikdoe,

die Konsole zeigt keine Fehlermeldungen und das Serverscript wird nicht erreicht (Habe dort eine Debug-Meldung eingebaut).

Bin weiter auf der Suche ...
 
Zuletzt bearbeitet:
Vielen Dank fuer das Angebot ... ich war sehr froh, das jemand bereitwillig in mein Problem einsteigt !

Habe den Fehler nach langer Suche gefunden. Der Fehler trat auf dem Webserver eines ESP8266 WiFi-Moduls auf. Dort wird das Paket "esp8266WebServer" eingesetzt. Diese Software geht davon aus, das es ein Header-Paar mit dem Schluesselwort "Content-Type" empfangen wird. Der Edge sendet jedoch "content-type" und das geht schief. Habe die Webserver Software erweitert, das jetzt beides geht:

Code:
...
      if (headerName == "Content-Type" || headerName == "content-type" ){
        if (headerValue.startsWith("text/plain")){
          isForm = false;
        } else if (headerValue.startsWith("multipart/form-data")){
          boundaryStr = headerValue.substring(headerValue.indexOf('=')+1);
          isForm = true;
        }
      } else if (headerName == "Content-Length"){
        contentLength = headerValue.toInt();
      } else if (headerName == "Host"){
        _hostHeader = headerValue;
      }
...

Viele liebe Gruesse ...
 
Habe die Webserver Software erweitert, das jetzt beides geht
https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

du solltest also alles in down- oder up-case konvertieren und dann erst vergleichen.

was mich wundert, die webserver software ist doch nicht in js geschrieben?
bei ESP8266WebServer finde ich das hier:
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WebServer/src/Parsing.cpp#L161
und dort wird case-insensitiv verglichen
 
Oh ... jetzt bin ich leicht irritiert. Ich verwende die Arduino-IDE und habe, wie auf https://github.com/esp8266/Arduino unter "Installing with Boards Manager" beschrieben, die Release 2.3.0 in die IDE "eingeklingt". Habe es eben nochmal wiederholt, es wird dann wohl eine aeltere Version installiert. Dann ist hier wohl alles obsolete ... jetzt drifte ich aber komplett weg von Javascript ... Ach, irgendwann bringt mich das alles ins Grab :)
 
Habe jetzt durch Google die Release 2.4.0 RC2 gefunden und installiert. Ohne euren Tipp hätte ich noch lange mit der 2.3.0 weitergearbeitet :)

@mikdoe: Wir haben einen STM32F7 mit dem ESP8266 WiFi-Fähig gemacht. Das ganze stellt einen CAN-Bus Controller dar, der CAN-Nachrichten numerisch und grafisch anzeigen kann.

Nochmals vielen Dank !
mrdynalink
 
Sorry ... es handelt sich um eine Elektronik, die Daten vom CAN-Bus (in PKW, LKW und Schiffen) liest und auf PC oder Smartphone anzeigt. Weiterhin können Parametrierungen der am Bus angeschlossenen Geräte vorgenommen werden. Der STM32F7 ist ein 32Bit-Controller-Prachtstück der Firma STM (leider auch schon wieder von Nachfolgemodellen überholt), der ESP8266 ist ein extrem günstiges WiFi-Modul der Firma Espressif (auch hier gibt es schon den Nachfolger STM32), dass einen eigenen Controller darstellt. Der Webserver läuft also auf dem ESP, nicht auf dem STM. Auch die Webseiten befinden sich auf dem ESP, der immerhin einen Speicher von 3MB dafür zur Verfügung stellt. Die beiden sind über SPI-Bus miteinander verbunden und können Daten mit 48MHz-Clockrate austauschen.

Viele Grüße
mrdynalink
 
Zurück
Oben