FormData je podroben uvod in uporaba https://developer.mozilla.org/zh ... ng_FormData_Objects
Metode in dogodki FormData so tam že zelo jasni, zato tukaj ne bom izgubljal časa z njimi. Ta članek predvsem pojasnjuje uporabo objektov FormData in asinhrone nalaganje datotek.
Objekt FormData nam omogoča organizacijo zbirke parov ključ-vrednost, poslanih z uporabo objekta XMLHttpRequest. Primarno se uporablja za pošiljanje podatkov obrazcev, vendar se lahko uporablja tudi neodvisno od podatkov, prenesenih z obrazci.
1. Ustvarite objekt FormData iz nič
Lahko ustvarite svoj lasten objekt FormData in nato dodate pare ključ-vrednost objektu preko metode append(), na primer takole:
Opomba: Tako polja »userfile« kot »webmasterfile« vsebujeta datoteke. Številka, dodeljena polju "accountnum", se neposredno pretvori v niz z metodo FormData.append() (vrednost polja je lahko blob, datoteka ali niz: če vrednost ni blob ali datoteka, se pretvori v niz). Ta primer ustvari instanco FormData s polji "uporabniško ime", "accountnum", "userfile" in "webmasterfile", nato pa uporabi metodo send() objekta XMLHttpRequest za pošiljanje podatkov obrazca. Polje »webmasterfile« je kepa. Objekt blob predstavlja surove podatke datotečnega objekta. Vendar podatki, ki jih predstavlja blob, niso nujno v izvorni JavaScript obliki. Datotečni vmesnik temelji na blobih, podeduje funkcionalnost blob in širi podporo za uporabniške datotečne sisteme. Za izdelavo bloba lahko pokličemo konstruktor Blob().
2. Pridobite objekt FormData iz HTML obrazca
Za pridobitev objekta FormData, ki vsebuje obstoječe podatke obrazca, morate ob ustvarjanju objekta FormData določiti element obrazca.
Všeč mi je:
Po pridobitvi objekta FormData lahko dodate tudi dodatne podatke, na primer:
To vam omogoča, da pred pošiljanjem dodate dodatne informacije, ki niso nujno urejene s strani uporabnika.
3. Uporabite objekt FormData za pošiljanje datoteke
Za pošiljanje datotek lahko uporabite FormData. Preprosta <form>sredina <input>lahko vsebuje element:
Nato lahko uporabite naslednjo kodo za pošiljanje:
Datoteko ali Blob lahko dodate tudi neposredno v objekt FormData, na primer:
Pri uporabi metode append() se lahko uporabi tretji parameter za pošiljanje imena datoteke (poslano strežniku preko glave Content-Disposition). Če tretji parameter ni določen ali ta parameter ni podprt, tretji parameter privzeto nastavi "blob".
Če nastavite pravilne nastavitve, ga lahko uporabite tudi z jQuery:
|