Výběr souboru - File select

V HTML je ovládací prvek výběru souboru složka webového formuláře, pomocí které 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 na 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 skriptem 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. Je to inputprvek, type="file"který vytváří ovládací prvek výběru souboru.

<form action="form-handler.php" method="post" enctype="multipart/form-data">
	<div>
		<input id="myfile" name="myfile" type="file">
		<input value="Upload ►" type="submit">
	</div>
</form>

Vykreslování

Pokud jde o vykreslování na obrazovce ovládacího prvku pro výběr souboru, mezi webovými prohlížeči existují určité rozdíly . Na platformě Windows obvykle uživatelští agenti vykreslí ovládací prvek výběru souboru jako textové pole spolu s tlačítkem „Procházet“. Po stisknutí tlačítka „Procházet“ se otevře dialogové okno se soubory , ve 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 s jeho úplnou cestou. 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 , již neumožňují 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í.

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í k 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, který pro další informace o nahrávání souborů na základě formulářů výslovně odkazuje na RFC 1867 .

HTML 4.01 samo o sobě nepopisuje, jak má ovládací prvek pro výběr souborů fungovat, ale uvádí jako reference RFC 2388 a RFC 1867 .

Výběr více souborů

Záměrem 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 řízení výběru souboru uvádí

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 poznamenáno, že množné "soubory" ve výše uvedeném citátu naznačují, ž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.

Přijměte atribut

RFC 1867 také představil acceptatribut inputprvku. To by umožnilo filtrování typu souboru na základě typu 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:

<input id="myfile" name="myfile" type="file" accept="image/gif,image/png">
<input id="myfile" name="myfile" type="file" accept="image/*">

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ž aplikace Internet Explorer 4, Netscape Navigator 2.0 a Opera 3.5 rozpoznala inputprvek type="file"jako ovládací prvek pro výběr souboru.

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

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í, ž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ů. S první beta verzí řady Opera 7 však tato funkce již nebyla k dispozici. Firefox verze 3.6 začal podporovat výběr více souborů, což vývojářům umožnilo omezený přístup k samotným souborům před jejich nahráním na server, a to prostřednictvím rozhraní HTML5 File API. Tato funkce také umožňuje uživatelům přetahovat soubory z externích aplikací (například Průzkumníka Windows ) přímo do webové aplikace. Jedním z pozoruhodných příkladů podpory této funkce je Gmail, který umožňuje přidávat přílohy tímto způsobem.

HTML5 umožňuje nahrávání více souborů pomocí atributu multiple na vstupních prvcích.

Alternativa JavaScript

Jedním z řešení je použít skriptování na straně klienta, jako je 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ávání. Pomocí CSS mohou být tyto další ovládací prvky pro výběr souborů nastaveny tak, aby se nezobrazovaly. Příklad této techniky je demonstrován v pluginu Multiple File Upload 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 . Citováno 2013-09-02 .
  3. ^ „Odkazy na specifikaci 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 do souboru (nebo„ upload “) ve formátech HTML“ . Cs.tut.fi . Citováno 2013-09-02 .
  6. ^ „Specifikace HTML 5.1“ . W3C.
  7. ^ "typ vstupu = soubor 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). msgstr "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