ESP8266 - web jpg

Odpovědět
Uživatelský avatar
morlor
Příspěvky: 45
Registrován: 07 lis 2013, 14:30
Kontaktovat uživatele:

ESP8266 - web jpg

Příspěvek od morlor »

Ahoj,

Na WEMOS D1 R1 mám připojený modul SD karta (tady je uložený soubor default.txt a obrazek.jpg)

soubor default načtu, ale není na stránce obrázek.
Jak se načte a zobrazí na webovém prohlížeči?

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <SPI.h>
#include <SD.h>
File myFile;
const String html;
const byte DNS_PORT = 53;
DNSServer dnsServer;
IPAddress    apIP(192, 168, 1, 1); 
ESP8266WebServer server(80);


void handleRoot() {

String html;
myFile = SD.open("default.txt");
if (myFile) {
while (myFile.available()) {
html = html + char (myFile.read());
}
myFile.close();
} 

server.send ( 200, "text/html", html);
}

void handleNotFound() {
  server.send ( 200, "text/plain", html );
}

void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;}
delay(1000);

WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("FREE WIFI","", 4, 0);
dnsServer.setTTL(100);
dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure);

// start DNS server "*" vsechno presmerovat na 192.168.1.1
dnsServer.start(DNS_PORT, "*", apIP);

IPAddress myIP = WiFi.softAPIP();

  server.on ( "/", handleRoot );
  //server.on ( "/inline", []() {
  //server.send ( 200, "text/plain", "this works as well" );
 // } );
server.onNotFound ( handleNotFound );
server.begin();
}

void loop() {
dnsServer.processNextRequest();
server.handleClient();
}
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: ESP8266 - web jpg

Příspěvek od gilhad »

Pokud je v tom textu odkaz na ten obrazek, tak ho server taky musi na prislusne adrese poskytovat.

Kód: Vybrat vše

 server.on ( "/", handleRoot );
ti vrati ten text, pokud se nekdo zepta na root serveru. Potrebujes jeste neco jako

Kód: Vybrat vše

 server.on ( "/obrazek.jpg", handleObrazek );
co ti vrati obrazek ( a nikoli jako "text/html", ale jako "image/jpeg" (a pokud je ten obrazek velky, tak ho asi budes muset posilat po castech, co se ti vejdou do pameti, nebo mensich)
Odpovědět