Ustvarjanje spletnih obrazcev za spletne strani (praktični vodič)

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Vsi videoposnetki vadnice Ustvarjanje spletnih obrazcev za spletne strani (praktični vodič)

Nalaganje datotek prek spletnega obrazca je pomemben del večine sodobnih aplikacij in spletnih mest. V tem navodilu se naučite, kako učinkovito implementirati element Input z obliko "file" za nalaganje datotek. Razumeli boste, kako deluje postopek izbire datoteke, kako zagotoviti, da se datoteka pravilno pošlje na strežnik, in kateri nastavitve so pomembne. To vodilo je namenjeno razvijalcem, ki želijo razširiti svoje znanje o delu s HTML obrazci in nalaganjem datotek.

Najpomembnejše ugotovitve

  • Element Input s obliko "file" omogoča uporabnikom nalaganje datotek.
  • Pravilna uporaba vrste oblike obrazca in atributa Enctype je ključna za uspešno nalaganje datotek.
  • Z uporabo JavaScripta lahko ustvarite uporabniško prijazno vmesnik za nalaganje datotek.

Korak-za-korak vodnik

Najprej se prepričajte, da osnovni HTML obrazec že vsebuje element Input s obliko "file".

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Tukaj v tem lokalnem primeru sem že nastavil element Input s Tipom "Datoteka". Vidiš, da poleg gumba piše "ni izbrana nobena datoteka". Element Input s obliko "file" uporabnikom omogoča izbiro ene ali več datotek, ki se nato odprejo prek dialoga z datoteko, ki je lasten operacijskemu sistemu.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Videz dialoga se razlikuje glede na operacijski sistem, bodisi Windows, Linux ali MacOS. Tukaj je moj primer na sistemu MacOS, na katerem si lahko ogledate izbiro ene ali več datotek. Ko kliknete "Odpri," bo izbrana datoteka prikazana v polju za vnos.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Zdaj ste izbrali datoteko in prikazana je kot vrednost znotraj elementa Input. Da obdelate obrazec, uporabljamo metodo GET.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Nato lahko obrazec pošljete, vendar opazite, da je v URL-ju prikazano samo ime datoteke. To pa moramo spremeniti, da pošljemo celotno vsebino datoteke na strežnik.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Za to moramo spremeniti metodo v POST. Da preverite, kaj je poslano, se premaknite na zavihek »Network«.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Prej morate zagotoviti, da ste izbrali vsaj eno datoteko. Če izberete datoteko "slika.jpg" in pošljete obrazec, jo boste našli v obliki »Payload«. A hitro opazite, da je preneseno samo ime.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Težava je v tem, da atribut Enctype ni nastavljen. Nastaviti ga moramo na večdelno/form-data, da prenesemo datoteko v pravilni obliki podatkov.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Z uporabo tega Enctype-ja lahko zagotovite, da strežnik prejme datoteko v svojih binarnih podatkih. Ko to uredimo, ponovno izberemo našo slikovno datoteko in ponovno pošljemo obrazec.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Zdaj lahko vidite, da prenos vsebuje ne le ime datoteke, temveč tudi binarne podatke, ki jih mora strežnik obdelati.

Strežnik mora te binarne podatke nato dekodirati. Pomembno je, da strežnik te informacije pravilno interpretira, da lahko datoteko shrani v podatkovno bazo ali na strežnik.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Če želite obrazec razširiti, lahko dodate dodatna polja za vnos. Na primer, klasično besedilno polje, da pošljete ime slike skupaj z slikovno datoteko.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Podatki se nato prenašajo kot besedilo in binarni podatki. To omogoča večplastno obdelavo na strežniški strani.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Še ena koristna značilnost je implementacija "multiple", ki omogoča uporabnikom nalaganje več datotek hkrati.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Ko dodate atribut multiple, lahko uporabniki v oknu za izbiro datotek izberejo več datotek.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Ne pozabite dodati Event Listenerja, da boste lahko upravljali izbrane imena datotek, ko uporabniki izberejo svoje datoteke. To vam omogoča tudi dostop do števila naloženih datotek.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Poleg tega lahko določite, katere vrste datotek lahko uporabnik izbere, tako da uporabite attribut accept.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Če želite na primer omogočiti le JPEG- ali PNG-slike, lahko to enostavno določite v deklaraciji za vnos, da se izbira prilagodi glede na operacijski sistem.

Lahko določite tudi splošne formate s podporo image/*, da dovolite izbiro vsem slikovnim datotekam.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Če želite izvedeti več o možnostih atributa "accept", vam priporočam uporabo MDN spletnih dokumentacij.

Učinkovita implementacija nalaganja datotek v spletnih obrazcih

Te dokumentacije ponujajo celovite informacije o uporabi elementa Input in drugih funkcij obrazca.

Povzetek

Sedaj ste izkusili, kako lahko ustvarite preprost spletni obrazec z elementom za nalaganje datotek. Obravnavali smo osnovne koncepte, vključno z metodami, kako se datoteka pošlje na strežnik, in katere atribute je treba uporabiti za optimizacijo postopka nalaganja.

Pogosto zastavljena vprašanja

Kakšna je razlika med GET in POST pri nalaganju datotek?GET pošilja samo imena datotek v URL-ju, medtem ko POST prenaša vsebino datoteke kot binarne podatke.

Kako zagotovim, da je datoteka poslana v pravilni obliki?Nastavite atribute enctype obrazca na multipart/form-data za prenos datotek.

Ali je mogoče izbrati več datotek hkrati?Da, s tem, ko dodate atribut multiple v oznako za vnos.

Kako lahko omejim formate datotek, ki jih je mogoče izbrati?Uporabite atribut accept v oznaki za vnos, da določite določene formate datotek.

Kje najdem dodatne informacije o elementu input type="file"?Mreža za razvijalce Mozille (MDN) je odličen vir za podrobne informacije in primere.