Hallo, ich bin gerade dabei ein bisschen mit dem Esp8266 zu experimentieren und bin schon seit ca. 2 Nächten am Verzeifeln.
Ich habe die folgende Css Datei in mein Projekt eingebunden und es klappte alles wunderbar. Wenn ich jedoch eine eigene Css Datei mit gleichem Code erstelle lädt mein Webserver diese nicht.
Der Firefox-Debugger gibt folgende Meldung:
File Not Found
URI: /styles.css
Method: GET
Arguments: 0
Hier mal der Fetzen Code aus meinem Programm der mir Probleme bereitet:
Ich hatte ganz vergessen zu erwähnen, ich habe eine Html Datei im gleichem Verzeichniss wie das Arduino File und diese kann auf die .css Datei zugreifen. Deshalb schließe ich den Fehler mit einem falschen Pfad und Unterverzeichnisfehlern aus.
okay und was heißt das nun? Ich habe leider nur sehr mäßige Kentnisse von allem außer C. Kann ich nur über einen Url die Css laden oder wie gebe ich die Referenz auf diese an?
Tja, mit mässigen Kenntnissen in C hat das weniger zu tun. Die url ist schon richtig, nur musst du den Sketch so erweitern, dass wenn die css Datei angefordert wird, der ESP sie auch ausgibt.
Oder, falls der ESP und das abrufende Gerät Zugang zum Internet haben, kannst du die css Datei auf externen Webspace legen und im Sketch auf extern verlinken.
Falls dir dies alles nichts sagt, solltest du dein Projekt in Standby setzen und dich erstmal mit den grundlegenden Sachen was LAN, Internet, Webserver, etc. beschäftigen. Dann ist C wahrscheinlich noch dein kleinstes Problem.
okay ich habe es verstanden danke. Entweder vom Webspace laden oder zusätzlich mit ausgeben. Und ich meinte dass ich nur C programmieren kann und kein html oder css.
MfG
Leider kann ich nicht wirklich erkennen, wo die gewünschte *.css-Datei real abgelegt ist oder abgelegt werden soll. Aber oft kann man solche Unsicherheiten vermeiden, in dem man dem Browser eine eindeutige Basis für den Datei-Zugriff mitteilt. Von dort aus berechnet er dann alle weiteren Pfade zweifelsfrei:
ist doch egal, wo sie ist bzw. ob sie überhaupt real als file existiert. Nur wenn der Browser sie per GET /styles.css anfordert, muss der ESP8266 liefern.
Ich glaube, hier gehts etwas durcheinander, von wegen 'Anfordern' und 'Ausliefern'.
Style Sheets (CSS) sind Formatierungsanweisungen, die dem Browser sagen, wie er die Elemente der HTML-Seite darstellen soll, also Text fett, Hintergrund rot und Listen eingerückt. Um die Lesbarkeit der HTML-Seiten zu erhalten, kann man diese Formatierungsanweisungen in separate Dateien auslagern. Man muss dem Webserver natürlich mitteilen, in welcher Datei das geschehen ist und wo er diese findet. Vorzugsweise hat sich dafür die Dateiendung '.css' und dar Name 'style', oder auch 'styles' durchgesetz. Beides ist nicht zwingend und beliebig zu verwenden. Auch der Speicherort ist nicht festgelegt und muß deshalb exakt angegeben werden. Das passiert über die zuständige Referenz im Header der Seite, beispielsweise:
wobei unter 'href' der exakte Pfad gesetzt sein muss.
Der Webserver bindet diese Formatanweisungen zur Laufzeit in den HTML-Code ein und übermittelt diese Anweisungen an den Browser. Es muß diese Datei also nicht explizit angefordert werden.
@EMeS: Hast du eigentlich die Problematik verstanden, um die es hier geht?
@nassim95: nimm die 2. Variante hiervon, ist im Moment einfacher für dich.
Die andere Möglichkeit ist:
Du speicherst die gesamte css Datei in einem String, wie du es mit der html Datei auch machst.
Dann fragst du ab, ob per GET / oder /styles.css angefragt wird. ist es letzteres, dann client.println(variable), else gib die html Seite aus
Die andere Möglichkeit ist:
Du speicherst die gesamte css Datei in einem String, wie du es mit der html Datei auch machst.
Dann fragst du ab, ob per GET / oder /styles.css angefragt wird. ist es letzteres, dann client.println(variable), else gib die html Seite aus
Die Pfadangabe ist immer in Relation zur verwendeten html-Datei zu sehen, der Web-Server kennt im Betrieb nicht die Laufwerke und Ordner Deines Programmier-PC's. Im einfachsten Fall liegt Deine CSS-Datei im gleichen Verzeichnis wie Deine aufrufende HTML-Datei:
@eMeS: falls du es immer noch nicht mitbekommen hast: Bei dem verwendeten ESP8266 gibt es keine Verzeichnisse, nicht einmal ein Filesystem, wo irgend etwas liegen kann.
Wenn die css Datei auf dem lokalen PC ist, auf der auch der Browser ist, müsste es theoretisch klappen, aber ich glaube eher, das der Browser Zugriffe auf lokale Laufwerke unterbindet.