...
Identifisering av MIME type og fortelle klienten om dette kan også være litt vrient. Vi har ikke funnet noen tutorials som gjør dette enkelt å forstå eller enkelt å reprodusere, derfor har vi bakt dette inn i biblioteket vårt, basert på filnavnet som etterspørres.
Biblioteket
...
Vi har lagt ut et bibliotek som skal gjøre det mye enklere å lage en web server som gir ut filer. Filene leses i utgangspunktet rett fra SD kortleseren, men vi har lagt med muligheten for å filtrere og endre forespørsler og svar. Vi har prøvd å minimere minnebruken til biblioteket, men bruker allikevel rundt 1300 byte. Dette gjør at du bare har 200-400 byte du kan bruke i tillegg til biblioteket. Brukes noe særlig mer enn dette blir Arduino ustabil, den henger, får uforklarlige omstarter eller lignende.
Biblioteket vårt er beregnet til å starte en web server som gir ut filer rett fra et SD kort. I tillegg kan du filtrere forespørsler, eller til og med bruke filene som templates hvor du endrer deler av teksten som blir levert til klienten. Eksemplene vi har lagt ut er:
- PLabExamples/examples/17.Web/BasicHttpFileServer - Setter opp en server med port 80 som deler ut alle filene som er på SD kortet.
- PLabExamples/examples/17.Web/HttpFileServerFilters - Setter opp en server som gir all debug informasjon via filter. Fungerer som dokumentasjon på alle filtreringsmuligheten du har med dette biblioteket.
- PLabExamples/examples/17.Web/HttpFileServerGetQuery - Viser hvordan du kan lese ut informasjon som har blitt sendt med GET metoden. Slike forespørsler forekommer fra blant annet AJAX og HTML form (når metoden er definert som GET).
- PLabExamples/examples/17.Web/HttpFileServerFilterTest - Leter etter teksten "test" i alle filer som blir etterspurt, og legger til " INSERTED BY FILTER " rett etter denne teksten. Dette eksempelet kan brukes som utgangspunkt hvis du vil lage en template. For eksempel kan du velge ut ett eller flere tegn (eller kombinasjoner) som ikke er naturlig i noen av filene (for eksempel er "$" lite brukt) og sette inn egen tekst på dette punktet. Bruker du en slik strategi kan det være greit å følge med hvilken fil(type) du svarer: når bilder oversettes til tekst kan det bli mange spesielle tegnkombinasjoner av seg selv.
I biblioteket har vi lagt inn støtte for følgende feilmeldinger, en liste som kan utvides:
Kode | Beskjed | Beskrivelse |
---|---|---|
400 | Bad Request | Klienten hadde syntaksfeil i forespørselen. |
404 | Not Found | Fant ikke ressurs, for eksempel fantes ikke filen på SD kortet |
414 | Request URI Too Long | Klarte ikke å holde hele den etterspurte adressen. Som standard i biblioteket vårt skjer dette når den etterspurte URI-en er over 79 tegn. |
500 | Internal Server Error | Når det oppstår en uforutsett feil i serveren. |
501 | Not Implemented | Alle forespørsler som ikke bruker GET eller HEAD metode vil trigge denne. |
505 | HTTP Version Not Supported | HTTP finnes i flere varianter. Denne serveren støtter kun 1.x. |
Filtyper, og da innhold, gjenkjennes av biblioteket basert på filnavnavslutningen. Det vil si det som kommer etter siste punktum i filen (heter filen index.html, snakker vi da om html). De MIME typene biblioteket gjenkjenner er:
Filetternavn | MIME type |
---|---|
htm | text/html |
html | text/html |
xml | application/xml |
css | text/css |
js | application/javascript |
json | application/json |
jpg | image/jpeg |
jpeg | image/jpeg |
png | image/png |
gif | image/gif |
svg | image/svg+xml |