Lokale filer
Det vi skal gjøre er basert på W3C's File API [1] . Denne skal altså hjelpe oss å handtere, lese, lokale filer i litt forskjellige formater og på forskjellig måte. De sentrale begrepene er:
- File er en fil med informasjon som navn, mimetype og referanse til selve filinnholdet, alt bare for lesing.
- FileList er en list av File-objekter
- FileReader er en leser som kan lese innholdet av et File-objekt.
- Blob gir oss mulighet for å lese deler av et filinnhold.
Siden vi beveger oss litt i kanten av hva alle nettlesere handterer kan vi sjekke tilstanden med følgende script:
if (window.File && window.FileReader && window.FileList &&window.Blob) { // ok we do nothing } else {alert('The File API is not fully supported ny your browser');}
En FileReader leser en fil asynkront. De viktigste metodene:
- readAsText(blob|file, encoding)
- readAsDataURL(blob|file)
- readAsArrayBuffer(blob|file)
De to første er brukt nedenfor. Det er interessant å merke seg at det formatet som lages av readAsdataURL er det samme formatet som vi kan bruke både som kilde til et bilde i en Canvas og som src i et img-element, se Wikipedia [2] .
Nedenfor skal vi laste bilder og tekst både ved hjelp av å browse lokalmaskinen og ved hjelp av HTML5' drag and drop.
Når vi så har fått tak i datene, kan vi selvsagt bearbeide dem, legge dem ut på siden for "copy and paste" eller vi kan sende dem til serveren med f.eks. et Ajax kall. I eksemplene nedefor er det bare gjort viderebehandling av lastede bilder. Her kan du tegne rett på bildet (lagret i en canvas, ved hjelp av et enkelt processig-skript, se modulen Processing .
Bilder
Last opp en fil
Fast bildebredde:(skalert)
tegn med mus
"Save Image As .."
Den involverte Javascriptkoden er slik:
Selve tegningen som du kan gjøre på canvas er implementert ved hjelp av processing og pde-skriptet er slik:
Drag and Drop
Den involverte Javascriptkoden er slik:
Text
Last opp
Den involverte Javascriptkoden er slik:
Drag and Drop
Den involverte Javascriptkoden er slik: