Vyberte soubor - File select

v HTML, ovládací prvek pro výběr souboru je součástí a webový formulář pomocí kterého může uživatel vybrat místní soubor. Po odeslání formuláře (možná společně s dalšími údaji z formuláře) se soubor nahraje do souboru webový server. Tam, když soubor dorazí, obvykle proběhne nějaká akce, například uložení souboru na webový server. Konkrétní akce, která se uskuteční, je však určena skript na straně serveru kterému je formulář odeslán.

Příklad kódu

Zde je příklad kódu webového formuláře s ovládacím prvkem pro výběr souboru. To je vstup prvek s type = "soubor" který vytvoří ovládací prvek pro výběr souboru.

<formulář akce="form-handler.php" metoda="pošta" enctype="multipart / form-data">	<div>		<vstup id="můjsoubor" název="můjsoubor" typ="soubor">		<vstup hodnota=„Nahrát ►“ typ="Předložit">	</div></formulář>

Vykreslování

Pokud jde o vykreslení na obrazovce ovládacího prvku pro výběr souboru, existuje mezi nimi určitá variace internetové prohlížeče. Na platformě založené na systému Windows typicky uživatelští agenti vykreslí ovládací prvek výběru souboru jako textové pole spolu s tlačítkem „Procházet“. Když je stisknuto tlačítko „Procházet“, a dialogové okno souboru otevře, se kterým může proběhnout skutečný výběr souborů na platformě. Po výběru se v textovém poli zobrazí název vybraného souboru. Alternativně můžete místo tlačítka „Procházet“ zadat název souboru přímo do textového pole.

Některé prohlížeče, zejména Firefox,[1] již neumožňuje přímé zadávání názvu souboru. Toto je bezpečnostní opatření - je možné přimět uživatele k nahrání důvěrných informací.[2]

Funkčnost

Mechanismus pro nahrávání souborů na základě formulářů byl původně navržen v RFC 1867 (publikováno v listopadu 1995), jako rozšíření HTML 2.0 (RFC 1866 ), po jeho zveřejnění. Nahrávání souborů na základě formulářů bylo poté začleněno do HTML 3.2, na který se výslovně odkazuje RFC 1867 Další informace o nahrávání souborů na základě formulářů.

HTML 4.01 samo o sobě nepopisuje, jak má ovládací prvek výběru souborů fungovat, ale obsahuje seznam RFC 2388 a RFC 1867 jako reference.[3]

Výběr více souborů

Záměr v RFC 1867 je, že jeden ovládací prvek pro výběr souborů by měl umožňovat výběr více souborů. Zdá se, že tento záměr se odráží v HTML 4.01, který pro typ ovládacího prvku pro výběr souboru uvádí[4]

Tento typ ovládacího prvku umožňuje uživateli vybrat soubory, aby mohl být jejich obsah odeslán pomocí formuláře. Prvek INPUT se používá k vytvoření ovládacího prvku pro výběr souboru.

Bylo to poznamenáno[5] že množné číslo „soubory“ ve výše uvedeném citátu je známkou toho, že v HTML 4.01 měl ovládací prvek výběru jednoho souboru stále zpracovávat výběr více souborů, a ne pouze jednoho souboru.

Tato situace je v HTML5 vyjasněna přidáním atributu „multiple“, když má vstup souboru přijímat více souborů. Aktuální koncept určuje nové chování, které má být:

Pokud není nastaven atribut více, nesmí být v seznamu vybraných souborů více než jeden soubor.[6]

Přijměte atribut

RFC 1867 také představil akceptovat atribut pro vstup živel. To by umožnilo filtrování typu souboru na základě Typ MIME pro ovládací prvek výběru souboru.

Kromě toho se navrhuje, aby značka INPUT měla atribut ACCEPT, což je seznam typů médií oddělených čárkami.

Pokud je přítomen atribut ACCEPT, může prohlížeč omezit vzory souborů, které byly vyzvány, aby odpovídaly vzorům s odpovídajícími příslušnými příponami souborů pro platformu.

Uživatelský agent tedy může omezit výběr souborů, například v následujících případech, omezený na obrázky GIF a PNG nebo jakékoli obrázky:

<vstup id="můjsoubor" název="můjsoubor" typ="soubor" akceptovat=„image / gif, image / png“><vstup id="můjsoubor" název="můjsoubor" typ="soubor" akceptovat="obraz/*">

Na platformě Windows by to mohlo znamenat, že uživatelský agent by zobrazoval soubory pouze typů zadaných v dialogovém okně procházení souborů.

Omezení prohlížeče

Prodejci prohlížečů rychle přijali základní podporu pro výběr souborů. Například již internet Explorer 4,[7] Netscape Navigator 2.0 a Opera 3.5[8] poznal vstup prvek type = "soubor" jako ovládací prvek pro výběr souboru.

Většina moderních prohlížečů však stále neimplementuje ovládací prvek výběru souborů tak, jak byl zamýšlen, nebo postrádají určité funkce.[5]

Nelze vybrat více souborů

Nahrávání více souborů na základě formulářů pomocí jediného ovládacího prvku pro výběr souborů je podporováno v aktuálních verzích prohlížečů Chrome, Firefox, Internet Explorer, Safari a Opera. Jeden zdroj uvádí[5] že Opera podporuje výběr více souborů pomocí jediného ovládacího prvku pro výběr souborů. To platilo pro verze Opery od verze 3.5, ve kterých byla zavedena funkce nahrávání souborů.[8] S první beta verzí Opera 7 však tato funkce již nebyla k dispozici. Firefox verze 3.6 začal podporovat výběr více souborů,[9] umožnění vývojářům omezený přístup k samotným souborům před jejich nahráním na server prostřednictvím Soubor HTML5 API.[10] Tato funkce také umožňuje uživatelům přetahovat soubory z externích aplikací (například Průzkumník Windows ) přímo do webové aplikace. Jedním z pozoruhodných příkladů podpory této funkce je Gmail umožňující přidávání příloh tímto způsobem.

HTML5 umožňuje nahrávání více souborů pomocí násobek atribut na vstupních prvcích.[11]

Alternativa JavaScript

Jedním z řešení je použít skriptování na straně klienta jako JavaScript pro generování dalšího ovládacího prvku pro výběr souboru pro každý soubor, který si uživatel vybere pro nahrání. Použitím CSS, tyto další ovládací prvky pro výběr souborů mohou být nastaveny tak, aby se nezobrazovaly. Příklad této techniky je demonstrován na Zásuvný modul pro nahrávání více souborů pro jQuery. Tímto způsobem je problém s nahráváním více souborů vyřešen tím, že poskytuje tolik ovládacích prvků pro výběr souborů, kolik má uživatel souborů k nahrání. To však nevyřeší problém s výběrem více souborů pro nahrávání v aplikaci Internet Explorer.

Přijměte podporu atributů

Atribut akceptovat je aktuálně podporován Opera 11+, Chrome 16+, Safari 6+, Firefox 9+ a Microsoft Internet Explorer 10+.

Reference

  1. ^ „388784 - (CVE-2007-3511) Zaměření vstupu souboru Firefoxu na krádež zranitelnosti“. Bugzilla.mozilla.org. Citováno 2013-09-02.
  2. ^ „Chyba zabezpečení při nahrávání souboru události Mozilla Firefox OnKeyDown“. Juniper.net. 15. 11. 2010. Archivovány od originál dne 2013-02-21. Citováno 2013-09-02.
  3. ^ „Specifikace HTML 4“. W3.org. Citováno 2013-09-02.
  4. ^ „Formuláře v dokumentech HTML“. W3.org. Citováno 2013-09-02.
  5. ^ A b C „Vstup souboru (nebo„ upload “) ve formulářích HTML“. Cs.tut.fi. Citováno 2013-09-02.
  6. ^ "Specifikace HTML 5.1". W3C.
  7. ^ "typ vstupu = souborový objekt". Msdn2.microsoft.com. 2013-07-22. Citováno 2013-09-02.
  8. ^ A b "Historie prohlížeče: Opera". Blooberry.com. Citováno 2013-09-02.
  9. ^ 10. prosince 2009 Paul Rouget (10. 12. 2009). „vstup více souborů ve Firefoxu 3.6 ✩ Mozilla Hacks - blog vývojářů webu“. Hacks.mozilla.org. Citováno 2013-09-02.
  10. ^ „Používání souborů z webových aplikací - MDC“. Developer.mozilla.org. 2013-08-23. Citováno 2013-09-02.
  11. ^ Specifikace HTML 5.1: 4.10.5.3 Společné atributy vstupních prvků

externí odkazy