Blog
Otpremanje fajlova na statičkom sajtu: vaše prave opcije
· 3 min čitanja
Tekstualna polja su laka — pravo pitanje se pojavi kad brief kaže "a kandidati treba da prilože CV." Statički sajt ne može da primi fajl; jednostavno ne postoji server koji bi ga primio. Evo stvarnih opcija, od najgore do najbolje.
Opcija 1: "pošaljite nam imejlom" (predaja)
Tražite od korisnika da prilog pošalju imejlom. Tehnički funkcioniše, otprilike kao faks mašina: fajl stiže odvojen od podataka forme, u inboks, bez ikakve strukture i bez kontrole veličine. Za sve što se ponavlja — prijave za posao, priloge uz podršku, fajlove za štampu — to se pretvara u večno ručno arhiviranje.
Opcija 2: direktno otpremanje u cloud skladište (DIY put)
Front-end JavaScript može da otprema direktno u objektno skladište (S3-stil potpisanih URL-ova). To je legitimna arhitektura — i iznenađujuće mnogo posla da se uradi bezbedno: nešto mora da generiše te potpisane URL-ove (znači ipak pišete serverless funkciju), sami implementirate proveru veličine i tipa, povezujete otpremljeni fajl sa unosom forme kojem pripada, i odlučujete gde na svetu se taj bucket nalazi — a to postaje bitno čim otpremanja sadrže lične podatke kao što je CV.
Izaberite ovo kada su otpremanja vaš proizvod. Za "priložite fajl uz formu" ovo je gomila instalaterskog posla.
Opcija 3: multipart preko bekenda za forme (dosadna, ali ispravna opcija)
HTML podržava polja za fajlove otprilike oduvek:
<form action="https://formhook.app/f/fh_your-key"
method="POST" enctype="multipart/form-data">
<input type="email" name="email" required>
<textarea name="message" required></textarea>
<input type="file" name="attachment">
<button type="submit">Send</button>
</form>Jedna stvar koju svi zaborave jeste enctype="multipart/form-data" — bez toga pregledač šalje naziv fajla umesto samog fajla. Kada bekend za forme primi POST, fajl se čuva zajedno sa svojim unosom: otvorite upit u kontrolnoj tabli, prilog je tu, odmah. Ograničenja veličine i tipa se sprovode na endpointu, a zaštita od spama se odnosi na ceo unos, uključujući fajlove.
U Formhook-u, otpremanje fajlova je dostupno od Pro paketa naviše, i — deo koji je bitan za evropske sajtove — otpremljeni fajlovi se čuvaju u EU regionu Cloudflare R2, tako da CV koji priloži kandidat iz EU dobija isti odgovor o rezidentnosti podataka kao i tekstualna polja: nikad ne napušta EU. (Detalji o skladištenju u dokumentaciji.)
Praktična pravila bez obzira koju opciju izaberete
- Ograničite unos. Koristite atribut
accept(accept=".pdf,.png,.jpg") kao pomoć za UX, ali ga tretirajte kao savet — prava provera se dešava na endpointu. - Recite korisnicima limit pre nego što ga dostignu. "Maks. 10 MB" pored polja je bolje od greške posle sporog otpremanja.
- Fajlovi su takođe lični podaci. CV je verovatno osetljiviji od polja forme oko njega. Politike čuvanja, brisanja i izvoza moraju da obuhvate priloge, a tvrdnja o lokaciji skladištenja u vašoj politici privatnosti mora da ih uključi. (Pogledajte GDPR listu za proveru.)
- Održite funkcionalnim put bez JS-a. Obična multipart forma se sasvim dobro šalje i bez ikakvog skripta; AJAX doterivanje dodajte preko toga, a ne umesto toga.
Šablon za statičke sajtove je ustaljen: sajt ostaje statičan, bekend za forme prima multipart POST, a fajl završava pored poruke uz koju je stigao. Forma je i dalje samo jedan atribut — plus jedan enctype.
Funkcionalna forma u jednoj liniji
Hostovano u EU, unosi se čuvaju zauvek, push obaveštenja na svakom paketu.
Počnite besplatnoBez kreditne kartice · pročitajte dokumentaciju
Nastavite čitanje
- Šta je form backend? (I kada vam je potreban)Form backend prima, čuva i prosleđuje unose sa formi na vašem sajtu, tako da ne morate da održavate server. Evo kako rade i kada vam je jedan potreban.
- Kontakt forme usklađene sa GDPR-om: praktična lista provereŠta GDPR zapravo zahteva od kontakt forme: pravni osnov, rezidencija i čuvanje podataka, politika privatnosti. Praktična lista provere za developere.
- Kako dodati kontakt formu na GitHub PagesGitHub Pages ne pokreće serverski kod, ali ipak možete imati funkcionalnu kontakt formu. Upoređujemo tri pristupa, uz rešenje za minut kopiranja i lepljenja.