Jak na lepší upload souborů
Nálepky:
Antonio Lupetti v článku File uploaders collection for web developers popisuje knihovny nabízejí lepší upload souborů, konkrétně Yahoo! UI Library Uploader, jQuery.MultiFile, FancyUpload, jQuery Ajax uploader, Mega Upload Progress Bar, Free ASP Upload, ColdFusion file upload progress a MooMultiple file upload.
Klasický formulářový upload je totiž nedostatečný. Dokáže nahrát najednou jen 1 soubor a neposkytuje zpětnou vazbu o postupu nahrávání. Zmíněné nástroje pak řeší jeden z těchto dvou problémů (případně oba) a nabízí uživateli snadný výběr a nahrání více souborů najednou včetně zobrazování progressbaru během nahrávání. Jak to dělají? Inu sáhnout po zcela jiné technologii, použijí Flash (resp. Flash komponentu na pozadí, takže na stránce si jí nevšimnete), který tyto možnosti obsahuje. HTML5 vícenásobný upload souboru řeší, ale byl doposud implementován pouze v Opeře, tudíž se na něj zatím nelze spoléhat.
Každopádně Flash řešení funguje, jen byste neměli vždy zapomenout jako alternativu nabídnout i klasické formulářové řešení. (Pozn. redakce: Argumentace dostatečnou penetrací Flashe mezi uživateli je v tomto případě lichá, protože jak se v redakci opakovaně přesvědčujeme, existují Flash uploadovací řešení, které na některých konfiguracích záhadně nefungují. Klasický HTML formulář pro upload je v takovém případě poslední záchranou.)
Jako správný antiflashista doplním, že s flashem asi budou velké problémy na mobilu. Populární Opera mini nezvládá flash vůbec a NetFront v mém mobilu zvládne něco jednoduššího (specifikace AFAIK říká Flash Lite 2.0). A to mám mobil řady Generation web.
'Klasický formulářový upload je totiž nedostatečný. Dokáže nahrát najednou jen 1 soubor a neposkytuje zpětnou vazbu o postupu nahrávání.'
Zpětná vazba je problém, už se těším na to, až budou obecné js objekty prohlížeče, které budu moci používat, ale nechápu co je myšleno tím jedním souborem. To myslíte jako paralelně nahrávat 2 soubory najednou (stejně jako se stahují paralelně obrázky z webu) ? Bo nahrávat více souborů na server přes jeden formulář není problém….
A otázka je, co získám, budu li nahrávat dotyčné soubory paralelně …
Je myšleno omezení uživatelského rozhraní, které umožňuje pouze výběr jednotlivých souborů, každý zvlášť, jeden po druhém. Problematické je to např. u uploadu fotogalerií, kdy žádoucí chování (které dnes nabízí třeba zmíněný Flash a v budoucnu s HTML5 bude každý prohlížeč) je vybrat třeba všechny soubory v adresáři a nechat je nahrát.
V kolika vláknech se budou odesílat, to uživatele netrápí. V reálu to bude stále sériově za sebou. Problém je čistě v uživatelském rozhraní formulářů.
Chápu, ze zprávičky to (alespoň mě) není jasné :) Tohle je ale o5 problém prohlížeče, příp. systému (grafického rozhraní) na kterém browser běží.
Dialog souboru ve Win vypadá jinak než v Lin (a i se malinko jinak chová). Vedle toho že neumí vybrat více souborů (tedy alespoň z hlediska uživatele to tak vypadá) narozdíl od Win, v Linuxu se mi velmi líbí že vidím náhled fotografie než ji vyberu. Ale chybí mě tam přehled souborů po sloupcích, takže se blbě hledá, jakou že fotku sem už nahrál, a jakou ještě ne :S
Ne, zmíněný problém se týká přímo standardu HTML, ze kterého toho chování vychází.
Ano, ale jen částečně. V něčem jako <input type="multifile" …> (cucám z prstu) v html5 to nebude problém implementovat. Ale vemte si, že máte javascriptem rozšiřovaná <input type="file" …> a zkuste navrhnout implementaci výběru více souborů zároveň. Uvidíte, že to není žádná sranda. A pak to někdo implementuje trošku jinak, než čekáte, a nepojede to.
Jen upřesním, ten zápis v HTML5 vypadá např.
<input type="file" max="100">
K té poznámce redakce: většina těchto flash uploaderů musela nedávno řešit problém s přechodem na Flash 10, ve kterém dříve používaný postup přestal fungovat (Flash 10 zamezil z bezpečnostních důvodů možnost programově vyvolat file dialog). Nové verze uploaderů to řeší jinak (flash už nemůže být skrytý, musí se klikat do něj). Nejsou ony záhadné nefunkčnosti důsledkem právě těchto nekompatibilit s Flashem 10?
O tomhle problému vím, ale mám pocit, že to v případě uploadu bude komplikovanější. Když jsme řešili např. problém s Flash uploadem, který používají galerie nového WordPressu, tak se problém objevil i jen v jednom prohlížeči, ale v jiném prohlížeči na témže počítači se stejnou verzí Flashe, to fungovalo.